php - 왜 Magento는 ID를 생성 한 후 고객을 구하지 못했습니까?




mysql (2)

나는 고객이 체크 아웃 할 때 등록하기로 선택하는 드문 버그 (그 간헐적 인 버그를 좋아한다)의 원인을 추적하려고 시도하고 있지만, 주문이 완료되면 Magento는 어떻게 든 고객 기록을 저장하지 못합니다. 이로 인해 전자 메일 주소가없고 귀찮은 고객 서비스 상황이 발생하여 고아가되었습니다.

지금까지의 조사 결과는 다음과 같습니다.

  • adminhtml의 Sales Order View는 고객이 Guest이고 이메일 주소가 비어 있다고보고합니다. 청구 및 배송 주소가 표시됩니다.
  • sales_flat_order 에서 customer_is_guest 가 false입니다 sales_flat_order
  • sales_flat_order 항목은 sales_flat_order 의 유효한 레코드에 sales_flat_order_address 됩니다.
  • sales_flat_order_address 레코드에는 customer_idcustomer_address_id 대한 값이 들어 있지만 링크 된 레코드는 존재하지 않습니다.
  • 고객 정보, 주문한 제품, 지불 방법에는 분명한 패턴이 없습니다.
  • system.log, exception.log, 아파치 오류 로그, var / reports 또는 내가 알고있는 다른 로그에는 관련 항목이 없습니다.

생각 :

  • 고객 저장이 진행되어 ID가 생성됩니다.
  • 저장의 롤백을 일으키는 customer_save_after에 옵서버가 있습니까?
  • 저수준 데이터베이스 오류로 인해 저장이 실패합니다.

누구든지 이것을 추적하는 방법에 대한 제안이 있습니까?

버전은 Enterprise 1.9입니다.


Answers

많은 추가 로깅을 추가하고 버그를 캡처 할 수있을 정도로 잘 로깅 해보고 버그를 발견 할 수 있다면 로그를 저장하십시오.

버그를 표시하는 로그가 있으면 문제가있는 코드를 더 쉽게 분리 할 수 ​​있습니다.

이를 위해 데이터베이스 쿼리를 기록해야 할 수도 있습니다. 데이터 양이 많거나 개인 정보 보호 문제가있는 경우에는 불행히도 까다로울 수 있습니다.


새 제출 단추에 onclick 메소드를 추가하여 양식의 조치를 변경 한 후 제출할 수 있습니다.

<script type="text/javascript">
  function submitForm(action) {
    var form = document.getElementById('form1');
    form.action = action;
    form.submit();
  }
</script>

...

<form id="form1">
  <!-- ... -->
  <input type="button" onclick="submitForm('page1.php')" value="submit 1" />
  <input type="button" onclick="submitForm('page2.php')" value="submit 2" />
</form>






php mysql magento