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.
quelle
*/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 sindAntworten:
Es war die PHP-Version von Cron Jobs.
Die PHP-Version wurde für die Site korrekt eingestellt, weshalb sie funktionierte. Cron Jobs wurde jedoch mit PHP 5.3 ausgeführt, weshalb ich die Fehler nur beim Ausführen von Cron erhalten habe. Ich habe auf Version 5.5 aktualisiert.
Geänderter Cron Befehl:
oder in hostgator:
in cron.php
Fügen Sie nach dieser Zeile Folgendes hinzu:
quelle
php -v
Im Terminal ausführen, um zu sehen, welche PHP-Version das Terminal verwendet. In meinem Fall war es 5.6. Also musste ich die Verwendung von PHP 7.0 erzwingen, indem ichphp
zuea-php70
in wechseltecrontab -e
. Vielen Dank!hast du versucht das zu leeren?
cron_schedule
tischÜberprüfen Sie, ob es nach etwa einer Stunde mit neuen Aufgaben voll ist.Auch können Sie verwenden Aoe_Scheduler verwenden , um bestimmte Cronjobs zu deaktivieren. Überprüfen Sie, ob eine bestimmte Ursache einen Fehler verursacht, durch den alle anderen Aufgaben angehalten werden.
Die Art und Weise, wie Magento-Cronjobs in einem Skript als schwerwiegender Fehler eingestuft werden, führt dazu, dass die Ausführung aller Aufgaben fehlschlägt
quelle
Als ersten Schritt würde ich vorschlagen, Ihre Einstellungen auf die Standard-Cron-Einstellungen von Magento zurückzusetzen:
Es gibt ein Problem mit Ihren aktuellen Einstellungen: Ihr Zeitplan wird alle 15 Minuten erstellt, aber nur für 5 Minuten im Voraus geplant, wodurch eine Lücke von 10 Minuten entsteht.
quelle
$isShellDisabled = true;
und wenn ich die Cron.php über den Browser starte, werden die Jobs ausgewählt, aber nicht über CronTab.php -f cron.php
und./cron.sh
prüfen Sie, ob sie weitere Nachforschungen anstellen.Gleiches Problem für mich.
"Zu spät ..." Fehler gefunden.
Nach dem Reinigen des
cron_schedule
Tisches hat cron.sh aufgehört zu arbeiten (keine Planung mehr).Hat erst funktioniert, nachdem alle alten Cron-Prozesse beendet wurden.
quelle
Ich hatte das gleiche problem Mein Problem war zeitzonenspezifisch: Die Spalten
created_at
undscheduled_at
in dercron_schedule
Tabelle sollten UTC + 0 lauten, meine Einträge waren UTC + 2.Um dies zu überprüfen, können Sie einfach die Daten von
created_at
undscheduled_at
bis gestern einstellen und bis zum nächsten Cron-Zeitplan warten.Hoffe das hilft jemandem!
quelle
Auf Bluehost in cron.sh ändern
zu
Im Shared Hosting läuft standardmäßig PHP 5.2.
Ich musste auch wechseln
cron.php
und die beiden$isShellDisabled
Zeilen durch ersetzen$isShellDisabled = true;
Um PHP-Warnungen loszuwerden, habe ich diese Zeilen auch zuvor hinzugefügt
quelle