Magento 1.9.1 Email Queue가 작동하지 않거나 버그가 있음-문제 해결 방법 및 가장 좋은 패치는 무엇입니까?


35

우선, 이것은 1.9.1 이메일 대기열에 대한 또 다른 질문 / 주제입니다. 그러나 이것은 cron 문제 ( 또는 this 와 같은 ) 또는 사용되지 않는 새로운 대기열 기능 (이와 같은 )에 관한 것이 아닙니다 .

우리의 경우 대기열 ( core_email_queuecore_email_queue_recipients)이 단순히 새로운 주문 또는 주문 업데이트에 대한 이메일을받지 못하므로 주문과 관련된 이메일이 더 이상 발송되지 않으며 cron이 이메일을 완벽하고 수동으로 추가합니다. 대기열이 작동하고 발송됩니다.

이상한 점은 테스트 환경에서 모든 것이 작동한다는 것입니다. 오늘 처음 몇 분 만에 라이브를 시작하더라도 모든 이메일이 처리되었지만 몇 분 후에 (실제 시스템에서 추가 수정없이) 더 이상 새로운 이메일이 대기열에 추가되지 않았습니다. 첫 번째 고객이 PayPal Express를 사용했을 때 이런 일이 일어났던 것 같습니다 (그러나 확실하게 말할 수는 없습니다). 우리는 사전에 테스트하지 않았습니다 :-/ 실제로 PayPal Express 논리에서 이전 sendNewOrderEmail()기능으로 일부 사용자 정의 재정의를 사용하고있었습니다 . 하지만 사용하도록 패치 한 후에도 이메일이 다시 작동하지 않습니다 queueNewOrderEmail().
따라서 첫 번째 질문은 이전 함수가 '파산'하는 일부 불일치를 유발할 수 있다는 것입니다. 이메일 대기열? 아니면 이것은 모두 큰 우연의 일치이며 완전히 다른 설명이 있습니까?

우리는 문제를 찾을 수 없었지만 당연히 다시 작동하려면 이메일이 필요했습니다. 또 다른 핵심 재정의를 했어요. 에서 Mage_Core_Model_Email_Template_Mailer(의 복사본 물론 local:) 우리는 라인 (76) 주석 ->setQueue($this->getQueue())
이 큐 우회 보인다 모든 메일이 다시 옛날 방식을 전송받을합니다.

그러나 핵심 재정의 횟수를 최소로 유지하고 다른 부작용, 마 젠토 코드에 대한 깊은 이해를 가진 사람들의 다른 팁 또는 솔루션에 직면 할 것인지 지금 알 수 없습니다. 이메일 대기열을 부탁드립니다.

1.9.2 업데이트 : 1.9.2로 업그레이드하면 전자 메일 대기열을 다시 자세히 살펴보고 문제를 재현 할 수 없었습니다. 그러나 우리는 여전히 1.9.1의 문제가 무엇인지 실제로 알지 못하므로 재정의가 Mage_Core_Model_Email_Template_Mailer::send()여전히 설명 된 방식으로 작동하므로 여전히 큐를 사용하지 않습니다. 이런 식으로 우리는 생산 시간이 지난 후에도 같은 문제가 다시 발생하지 않기를 바랍니다.

tl; dr : 이메일 대기열이 1.9.1에서 작동하지 않고 76 줄을 주석 처리 Mage_Core_Model_Email_Template_Mailer하면 이메일 대기열 을 무시하고 메일이 다시 전송되지만 좋은 해결책은 아닙니다. 이 문제를 어떻게 더 잘 해결할 수 있습니까?


1
처음 몇 분 동안 발생한 실제 트랜잭션 수와 비교하여 몇 개의 테스트 트랜잭션을 실행 했습니까? 이전 버전에서 업그레이드 되었습니까? 일부 파일이 없거나 잘못된 권한이 있습니까? 방법에 대한 exception.log또는 가능성 system.log, 단서가있다?
pspahn

1.9.0.1에서 업그레이드되었으며 Connect-Manager를 통해 수행되지 않았지만 Magento 코드베이스에서 수행되었으므로 파일이 누락 core되어 있는지 의심됩니다 ( 사용자 정의되지 않은 모든 항목 또는 확장 기능이 있고 수정되지 않은 상태 임). 권한이 이전 설정과 일치하고 로그 / 보고서가 깨끗합니다.
Jey DWork

cron이 동일하게 설정되어 있습니까?
pspahn

변경 로그에서 전자 메일 변경을 확인한 후 5 분마다 1 분마다 cron을 실행하도록 변경했습니다. 변경 사항을 이해하면 최악의 경우 고객은 확인 메일을 받기 위해 최대 5 분을 기다려야합니다. 그 외에는 아무런 변화가 없으며 이전에 말했듯이 다른 작업에서 크론은 아무런 문제없이 실행됩니다. // edit : 아마 core_email_queue_send_all매분마다 실행되도록 설정 한 Aoe_Scheduler를 사용 하고 실제로 실행되는 것을 볼 수 있습니다.
Jey DWork

2015 년 4 분기에 동일한 문제가 발생하여 일부 주문에 대해 대기열 테이블에 항목이 완전히 누락되었음을 확인할 수 있습니다. 이메일을받지 못했다는 보고서를 확인하는 명확한 표시입니다. 불행히도 필자의 경우 로깅이 해제되었으므로 아직 찾을 오류가 없습니다. 처음 게시 한 이후 추가하는 데 도움이 될만한 새로운 내용을 배웠습니까?
Rick Buczynski

답변:


8

내 생각에 매 분마다 cron.php를 설정하면 많은 것들이 서로 위에 서 있습니다. 즉, 동일한 성격 또는 유사한 것으로 예정된 다음 작업이 실행되기 전에 완료되지 않습니다. 두 cron.php는 각 상태를 인식하지 못하기 때문에. 동일한 레코드가 두 번 시도되어 큐 이메일 전송을 깨는 이상한 예외가 발생합니다.

그렇게 말한다면 거기에 Mage::Log그렇게 확신 로깅 도움으로 최고의 단계는 프로그래머의 경우 예외를 결정하는 것이다 활성화하고, 대기열 메일러의 예외가. php -f cron.phpCLI에서 실행 하여 예외도 발생하는지 확인하는 것이 현명 할 수 있습니다. 장면 뒤에서 실행되는 것을 보지 못할 수도 있습니다.

또한 mail()스팸 정책 등이 실행되지 않도록 간단한 PHP 테스트로 시작 합니다. 스택에서 더 낮은 것이 문제를 일으키는 지 확인하십시오.

약간의 추측, 그것이 도움이되기를 바랍니다!

* 편집하다 *

사용 cron.sh대신에 cron.php그것을 할 것으로 grep ps이전 프로세스가 이미 실행되고 있는지 볼 수 있습니다.


의견을 보내 주셔서 감사하지만 이러한 문제는 제외 할 수 있습니다. 실제 시스템 크론 작업이 1 분마다 실행된다고해서 모든 마 젠토 크론 작업이 수행되는 것은 아닙니다. 우리의 경우에는 이메일 만 1 분마다 실행되도록 설정되었으며 Magentos cron 로그에서 "스트레스가 많은"분 (즉, 이메일이 아닌 한 번에 더 많은 작업이 실행될 때마다 1 시간마다)에도 모든 cron 작업이 성공적으로 완료되었음을 확인할 수 있습니다. ). 로깅도 가능하며 예외는 전혀 발생하지 않습니다. 스팸 필터가 실행되지 않는 것은 물론 모든 이메일을 게시 한 해결 방법이 모든 고객에게 도달 한 후에도 제외 할 수 있습니다.
Jey DWork

기록되지 않은 예외를 생성하는 데 도움이되는지 확인하기 위해 개발자 모드를 사용하려고 할 수 있습니다. 그러나 프로덕션 환경에서 실행중인 경우주의하십시오. 또한 상관 웹 서버 로그가 있습니까?
B00MER

2
@JeyDWork Aoe_Scheduler를 구현 습니까? 이것은 좋은 가시성을 제공 할 수 있습니다.
benmarks

2
업데이트를보고 싶습니다. 이메일 대기열은 많은 사람들에게 도전이되고 있습니다.
benmarks

1
나를 위해 지불이 성공했는지 확인하고 주문 상태를 처리 / 완료로 변경하고 마지막으로 이메일을 보내기 위해 페이팔에서 IPN (Instant Payment Notification) 데이터를 반환 해야하는 페이팔 표준을 사용하고 있었지만 실제 도메인을 설정하지 않았습니다. 페이팔이 IPN 데이터를 magento에 게시 할 수 없었기 때문입니다. 페이팔 비즈니스 계정 프로필에서 IPN 기록을 확인할 수 있습니다. Paypal은 실제로 보낼 데이터와 상태가 "재시도"인 데이터를 보여주었습니다 ..
zaw

0

core_email_queue 및 core_email_queue_recipients에 AUTO_INCREMENT가 있는지 확인하십시오. 해당 테이블에 AI가 활성화되어 있지 않으면 새 항목을 가져 가지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.