Zuallererst ja, dies ist eine weitere Frage / ein weiteres Thema zur 1.9.1-E-Mail-Warteschlange. Es geht aber nicht um irgendwelche Cron-Probleme (wie dieses oder jenes ) oder darum, dass die neue Warteschlangenfunktion nicht verwendet wird (wie dieses ).
In unserem Fall hatten wir das Problem, dass die Warteschlange ( core_email_queue
und core_email_queue_recipients
) einfach keine E-Mails zu neuen Bestellungen oder Auftragsaktualisierungen mehr bekam und daher keine E-Mails mehr für irgendetwas mit Bezug auf die Bestellung verschickt wurden. Außerdem funktioniert cron perfekt und fügt E-Mails manuell hinzu Die Warteschlange funktioniert und sie werden versendet.
Das Seltsame ist, dass in unserer Testumgebung alles funktioniert hat. Selbst als wir heute in den ersten Minuten online gingen, wurden alle E-Mails verarbeitet, aber nach einigen Minuten (natürlich ohne weitere Änderungen im Live-System) wurden überhaupt keine neuen E-Mails mehr in die Warteschlange aufgenommen. Es scheint, als wäre dies passiert (aber ich kann es nicht genau sagen), als der erste Kunde PayPal Express verwendet hat, was wir vorher nicht getestet haben: - / Und tatsächlich haben wir einige benutzerdefinierte Überschreibungen in der PayPal Express-Logik mit der alten sendNewOrderEmail()
Funktion verwendet. Aber wir konnten E-Mails nicht wieder zum Laufen bringen, selbst nachdem wir diese für die Verwendung gepatcht hatten queueNewOrderEmail()
.
Die erste Frage wäre also, ob es möglich ist, dass die alte Funktion eine Inkonsistenz auslöst, die "kaputt geht". die E-Mail-Warteschlange? Oder ist das alles nur ein großer Zufall und es gibt eine ganz andere Erklärung?
Da wir das Problem nicht finden konnten, aber natürlich E-Mails brauchten, um so schnell wie möglich wieder funktionieren zu können, entschieden wir uns für einen weiteren Core-Override. In Mage_Core_Model_Email_Template_Mailer
(natürlich in einer Kopie in local
) haben wir Zeile 76 ->setQueue($this->getQueue())
auskommentiert : Dies scheint die Warteschlange zu umgehen und alle Mails werden wieder auf die alte Weise gesendet.
Da wir jedoch die Anzahl der Core-Overrides auf ein Minimum beschränken möchten, können wir derzeit auch nicht sagen, ob wir anderen Nebenwirkungen, anderen Tipps oder Lösungen von Personen mit einem tieferen Verständnis des Magento-Codes und des Magento-Codes gegenüberstehen E-Mail-Warteschlange wäre dankbar.
Update für 1.9.2: Beim Upgrade auf 1.9.2 haben wir uns die E-Mail-Warteschlange noch einmal genauer angesehen und konnten das Problem nicht reproduzieren. Da wir jedoch immer noch keine wirkliche Ahnung haben, wo das Problem mit 1.9.1 lag, und das Überschreiben Mage_Core_Model_Email_Template_Mailer::send()
immer noch auf die hier beschriebene Weise funktioniert, verwenden wir die Warteschlange immer noch nicht. Auf diese Weise hoffen wir, dass wir nach einiger Zeit in der Produktion nicht mehr auf dasselbe Problem stoßen.
tl; dr: Die E-Mail-Warteschlange funktioniert in 1.9.1 nicht. Wenn Sie Zeile 76 in auskommentieren, wird Mage_Core_Model_Email_Template_Mailer
die E-Mail-Warteschlange umgangen und die E-Mails werden erneut gesendet, aber dies scheint keine gute Lösung zu sein. Wie kann das besser gelöst werden?
quelle
exception.log
oder möglicherweisesystem.log
gibt es dort irgendwelche Hinweise?core
usw. vorgenommen, um sicherzustellen, dass alles, was nicht angepasst ist oder eine Erweiterung vorhanden ist, und unverändert und es ist). Berechtigungen stimmen mit den alten Einstellungen überein und Protokolle / Berichte sind sauber.core_email_queue_send_all
, dass es auch jede Minute ausgeführt wird und von wo aus wir sehen, dass es tatsächlich ausgeführt wird.Antworten:
Ich vermute, dass die Einstellung von cron.php, die jede Minute ausgeführt wird, dazu geführt hat, dass viele Dinge übereinander stehen, dh erst beendet werden, wenn die nächste geplante Aufgabe gleicher oder ähnlicher Art ausgeführt wird. Da beide cron.php nicht jeden Zustand kennen würden. Es könnte zweimal versucht werden, denselben Datensatz zu speichern, wodurch die E-Mail-Sendevorgänge in der Warteschlange ausnahmsweise unterbrochen werden.
Mage::Log
Nach alledem gibt es in der Warteschlange Ausnahmen. Wenn Sie also sicherstellen, dass die Protokollierung aktiviert ist, ist dies der beste Schritt, um festzustellen, ob es Ausnahmen gibt. Es kann ratsam sein, auch nurphp -f cron.php
von CLI aus zu starten, um zu prüfen, ob es auch Ausnahmen gibt. Sie können möglicherweise nicht sehen, wie es hinter den Kulissen ausgeführt wird.Ich würde auch mit einem einfachen PHP-
mail()
Test beginnen, um sicherzustellen, dass Sie keine Spam-Richtlinien oder ähnliches antreffen. Nur um sicherzugehen, dass es sich nicht um etwas Niedrigeres im Stapel handelt, das das Problem verursacht.Nur ein paar Spekulationen, hoffe es hilft!
* EDIT *
Verwenden Sie
cron.sh
stattcron.php
wie es tun wird ,grep ps
um zu sehen , wenn ein vorheriger Prozess bereits ausgeführt wird .quelle
Überprüfen Sie, ob core_email_queue und core_email_queue_recipients den Wert AUTO_INCREMENT haben. Wenn für diese Tabelle keine KI aktiviert ist, werden keine neuen Einträge akzeptiert.
quelle