Magento 1.9.1電子メールキューが機能しない/バグがある-トラブルシューティングの方法と最適なパッチとは何ですか?


35

まず第一に、これは1.9.1電子メールキューに関する別の質問/トピックです。しかし、それは(ような任意のcronの問題についての話ではありません、このまたはこれ)または(のように使用されていない新しいキュー機能に関する)。

私たちの場合、問題は、キュー(core_email_queueおよびcore_email_queue_recipients)が新しい注文または注文の更新に関するメールをまったく受け取らないため、注文関連のメールが送信されなくなること、cronが完全に機能し、手動でメールを追加することですキューは機能し、送信されます。

奇妙なことに、テスト環境ではすべてが機能していました。今日、最初の数分でライブになった場合でも、すべてのメールは処理されましたが、数分後(もちろんライブシステムをさらに変更することなく)、新しいメールはキューにまったく追加されませんでした。最初の顧客がPayPal Expressを使用したときにこれが起こったように見えますが(確かではありません)、事前にテストしていませんでした:-/そして実際、PayPal Expressロジックで古いsendNewOrderEmail()関数を使用してカスタムオーバーライドを使用していました。しかし、使用するようにパッチを適用した後でも、電子メールを再び機能させることはできませんでしたqueueNewOrderEmail()
したがって、最初の質問は、古い関数が何らかの矛盾を引き起こして「壊れた」可能性があるということです。メールキュー?それとも、これは単なる大きな偶然であり、まったく異なる説明がありますか?

問題を見つけることができませんでしたが、もちろんできるだけ早く再び電子メールを使用する必要があったため、別のコアオーバーライドに進みました。ではMage_Core_Model_Email_Template_Mailer(でコピー中のコースのlocal)私たちは、ライン76をコメントアウト:->setQueue($this->getQueue())
これは、キューバイパスに思えるし、すべてのメールが古い方法を再度送信されます。

ただし、コアオーバーライドの数を最小限に抑えたいため、他の副作用や、Magentoコードをより深く理解している人からのその他のヒントや解決策に直面するかどうかは現時点ではわかりませんメールキューをいただければ幸いです。

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 14

これは1.9.0.1からのアップグレードであり、Connect-Manager経由ではなく、Magentoコードベースから行われたため、欠落しているファイルがあるとは思わcoreれません(カスタマイズされていないものや拡張機能が適切に配置されていることを確認するために差分を作成したり、変更されていない)。権限は古い設定と一致し、ログ/レポートはクリーンです。
ジェイDWork 14

cronは同じように設定されていますか?
pspahn 14

変更ログで電子メールの変更を見たので、cronを5分ごとから毎分実行するように変更しました(変更を理解しているため、最悪の場合、顧客は確認メールを最大5分間待たなければなりません)。それ以外には変更はなく、前述のとおり、他のジョブからcronが問題なく実行されることがわかります。//編集:おそらくcore_email_queue_send_all毎分実行するように設定し、実際に実行されることがわかるAoe_Schedulerを使用する(そして常に使用する)ことを追加する必要があります。
ジェイDWork 14

2015年第4四半期と私は同じ問題を抱えています。キューテーブルには、一部の注文のエントリが完全に欠落していることを確認できます。残念ながら、私の場合はロギングがオフになっているため、まだエラーを探す必要はありません。あなたが最初に投稿してから、追加するのに役立つかもしれない何か新しいことを学びましたか?
リックBuczynski

回答:


8

私の推測では、cron.phpを毎分実行するように設定すると、多くのことが互いに立ちあがります。つまり、同じ性質または同様のスケジュールされた次のタスクが実行される前に終了しません。両方のcron.phpは各状態を認識しないためです。同じレコードを2回試行すると、メール送信のキューを壊す奇妙な例外が発生する可能性があります。

とはいえMage::Log、キューメーラーの例外には例外があるので、ログが有効になっていることを確認することは、例外があるかどうかを判断するのに役立つ最善の手順です。またphp -f cron.php、CLIから単に実行して例外もスローしているかどうかを確認するのが賢明かもしれませんが、舞台裏で実行されているのが見えないかもしれません。

また、単純なPHPから始めます mail()テストからスパムポリシーなどが実行されていないことを確認します。念のため、問題を引き起こしているスタックの下位のものではないことを確認してください。

ちょっとした推測、それが役立つことを願っています!

*編集*

使用するcron.sh代わりにcron.phpそれを行うだろうとgrep ps以前のプロセスがすでに実行されているかどうかを確認するために見て。


入力に感謝しますが、これらの問題はかなり確実に除外できます。実際のシステムcronジョブが毎分実行されるからといって、すべてのMagento cronジョブが実行されるわけではありません。私たちの場合、毎分実行するようにメールのみが設定されており、Magentos cronログから、すべてのcronジョブが正常に終了していることがわかります。 )。ロギングも有効になり、例外はまったくスローされません。スパムフィルターに遭遇することは除外でき、回避策を実行した後、すべてのメールがすべての顧客に届きます。
ジェイDWork

開発者モードを有効にして、ログに記録されない例外を生成するのに役立つかどうかを確認できます。ただし、実稼働環境で実行する場合は注意が必要です。相関するWebサーバーログもありますか?
B00MER

2
@JeyDWork Aoe_Schedulerを実装しましたか?これにより、視認性が向上します。
ベンマーク

2
アップデートをご覧ください。電子メールのキューは、多くの人にとって挑戦であることが証明されています。
ベンマーク

1
私にとっては、支払いが成功したことを確認し、注文ステータスを処理/完了に変更して最終的にメールを送信するために、PaypalからIPN(Instant Payment Notification)データが返される必要があるPayPal標準を使用していましたが、実際のドメインが設定されていませんでしたサーバーと仮想ホストがアクセスするため、PayPalはmagentoにIPNデータを投稿できませんでした。PayPalビジネスアカウントプロファイルでIPN履歴を確認できます。Paypalは実際に送信する
はず

0

core_email_queueおよびcore_email_queue_recipientsにAUTO_INCREMENTがあるかどうかを確認します。これらのテーブルでAIが有効になっていない場合、新しいエントリは取得されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.