Ich verbrachte fast 3 Tage und kann den Magento Cron nicht verstehen und veranlassen, die geplanten Aufgaben zu verarbeiten. Ich verwende Magento 1.9.1.0 und habe kürzlich festgestellt, dass Bestell-E-Mails nun in der Warteschlange stehen und nicht mehr sofort gesendet werden. Ich verstehe die Notwendigkeit, kann aber das System nicht dazu bringen, die Warteschlangen auszuwählen.
Hier ist mein Sehvermögen für Cronjob.
Hier ist meine Cronjob-Befehlszeile.
So werden die Aufgaben in der Tabelle cron_schedule erstellt.
Da die Datensätze in der Tabelle cron_schedule erstellt werden, wird der Cron meiner Meinung nach alle 5 Minuten einmal ausgeführt. Wenn ich diese Datensätze manuell über PhpMyAdmin lösche, werden die Datensätze nach einiger Zeit automatisch erstellt.
Der Status der Aufgaben bleibt jedoch "ausstehend" und wird nie abgeschlossen. Ich bin mir nicht sicher, ob etwas in meiner Konfiguration nicht stimmt oder ich etwas vermisse. Kann mir bitte jemand helfen, wie ich die geplante Aufgabe rechtzeitig ausführen kann? Warum werden auch mehrere Datensätze für einen Jobcode erstellt?
Aktualisieren
Ich habe den gesamten Tisch abgeräumt und der Cron hat die geplanten Jobs erstellt. Alle Jobs sind im Status "Ausstehend" und werden nie ausgeführt, selbst wenn sie länger als 60 Minuten warten. In Magento 1.9.1 stimmt etwas nicht
Update 11/02: Heute habe ich den Prozess etwas genauer analysiert.
Ich habe die cron.php wie folgt bearbeitet
echo 'iam before mdefault 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -mdefault 1 > /dev/null 2>&1 &");
echo 'iam before malways 1';
shell_exec("/bin/sh $baseDir/cron.sh $fileName -malways 1 > /dev/null 2>&1 &");
echo 'i returned success';
Ich habe die Mage_Cron_Model_Observer-Klasse wie folgt bearbeitet
public function dispatch($observer) {
echo 'iam inside dispath';
Meines Wissens nach sollte der Cron, wenn er den -mdefault ausführt, die Dispatch-Funktion aufrufen und die Ausführung erfolgen. Was aber passierte war wie unten in der Cron-Ausgabe.
Content-type: text/html
iam before mdefault 1iam before malways 1i returned success
Es bedeutet, dass der Versand nicht immer aufgerufen wird ...
Einander versuchen
Ich habe die Variable manuell geändert $isShellDisabled = true;
und das Folgende in der cron.php geändert.
if ($isShellDisabled) {
echo 'before always';
Mage::dispatchEvent('always');
echo 'after always';
Mage::dispatchEvent('default');
echo 'after default';
} else {
Mage::dispatchEvent($cronMode);
}
Die Cron-Ausgabe für das Obige ist wie folgt
Content-type: text/html
before alwaysiam inside dispath alwaysafter always
Jetzt heißt es "dispatchAlways", aber nicht "dispatch"
Keine der Antworten hilft mir. Die geplanten Aufgaben werden nie ausgewählt. Dh wenn der Cron zum ersten Mal ausgeführt wird, wurden die Aufgaben in der Tabelle erfolgreich erstellt. Aber es führt die Aufgabe niemals aus.
*/5 * * * * /bin/sh PATH_TO_PRODUCTION/cron.sh
falls verfügbar.
cron_schedule
tisch zu leeren Überprüfen Sie, ob nach etwa einer Stunde neue Aufgaben erledigt sind