So stellen Sie sicher, dass Ihr Magento 2.0-Cron-Job ausgeführt wird

7

Wie stelle ich sicher, dass mein Magento-Cron-Job ausgeführt wird? Ich richte cron gemäß den Installationsanweisungen für Magento 2 für die Protokolldateien ein.

Siehe Screenshot (zum Vergrößern anklicken):

https://drive.google.com/open?id=0Bytqhoir_Tt5TG5LTWh5TmYxN28

Ich verwende Magento CE 2.0.2

Serverplattform:

  • Betriebssystem: CENTOS 7.2 x86_64
  • CPU: Dual Intel (R) Xeon (R) CPU E5-2620 0 bei 2,00 GHz
  • RAM: 256 GB
  • Speicher: SSD-basierter Cloud-Speicher
  • Netzwerk: 20 Gigabit
  • Server-Benutzeroberfläche: cPanel / WHM 54.0 Build 18 (aktuell / stabil)
  • Apache: 2.2.26
  • MySQL: 5.6.29
  • PHP: 5.6.18

Crontab für das cPanel-Benutzerhostkonto:

*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento cron:run > /home/abcdefg/public_html/var/log/magento.cron.log&
*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/update/cron.php > /home/abcdefg/public_html/var/log/update.cron.log&
*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento setup:cron:run > /home/abcdefg/public_html/var/log/setup.cron.log&

Hinzugefügt am 05.05.2016

Ich wurde informiert, dass MySQL cron_scheduleCron-Aktivität enthält. Also habe ich mir die Tabelle angesehen und diese Einträge gefunden. Hier ist ein Ausschnitt aus jedem der eindeutigen Einträge in dieser Tabelle, der den neuesten Eintrag zeigt.

55534 aggregate_sales_report_coupons_data running Class Magento\SalesRule\Crone\AggregateSalesReportCouponsData does not exist 2016-05-04 19:54:02 2016-05-04 20:00:00 NULL NULL
56093 captcha_delete_expired_images success NULL 2016-05-05 07:06:03 2016-05-05 07:10:00 2016-05-05 07:10:02 2016-05-05 07:10:02
56081 captcha_delete_old_attempts success NULL 2016-05-05 06:51:02 2016-05-05 07:00:00 2016-05-05 07:00:03 2016-05-05 07:00:03
56070 catalog_index_refresh_price success NULL 2016-05-05 06:51:02 2016-05-05 07:00:00 2016-05-05 07:00:03 2016-05-05 07:00:03
56094 magento_newrelicreporting_cron success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56092 newsletter_send_all success NULL 2016-05-05 07:06:03 2016-05-05 07:10:00 2016-05-05 07:10:02 2016-05-05 07:10:02
56071 sales_clean_orders success NULL 2016-05-05 06:51:02 2016-05-05 07:00:00 2016-05-05 07:00:03 2016-05-05 07:00:03
56084 sales_grid_order_async_insert success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56087 sales_grid_order_creditmemo_async_insert success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56085 sales_grid_order_invoice_async_insert success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56086 sales_grid_order_shipment_async_insert success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56091 sales_send_order_creditmemo_emails success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56088 sales_send_order_emails success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56089 sales_send_order_invoice_emails success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03
56090 sales_send_order_shipment_emails success NULL 2016-05-05 07:06:03 2016-05-05 07:06:00 2016-05-05 07:07:03 2016-05-05 07:07:03

Wie kann ich außerdem die 3 Protokolldateikronen ausführen, die ich bei der Erstinstallation eingerichtet habe:

*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento cron:run >> /home/abcdefg/public_html/var/log/magento.cron.log&
*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/update/cron.php >> /home/abcdefg/public_html/var/log/update.cron.log&
*/1 * * * * /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento setup:cron:run >> /home/abcdefg/public_html/var/log/setup.cron.log&

Schließlich erinnere ich mich an ein paar Jahre zuvor, als ich eine Magento-Instanz für einen Client in Magento v1 installierte, dass der Seitenindex & Cache und der Produktindex & Cache irgendwie automatisch durch cron aktualisiert wurden. Wie kann ich Magento 2 dazu bringen, dasselbe zu tun? Jedes Mal, wenn ich mich im Adend-UI-Backend bei Magento 2 anmelde, muss ich den Cache neu indizieren und leeren, damit die Produkte meines Kunden auf der Website angezeigt werden können.

Test vom 05.05.2016 um 12:05 Uhr ET

(1) Ich habe die cron_scheduleTabelle abgeschnitten . Nach 1 Minute ist hier der neue Tisch:

Geben Sie hier die Bildbeschreibung ein

Hier ist die Tabelle, nachdem cron gelaufen ist:

Geben Sie hier die Bildbeschreibung ein

H. Ferrence
quelle
Bitte fügen Sie auch Ihre Systemdetails hinzu
Jayesh Patel
Wie mache ich das oder was möchten Sie speziell sehen @JayeshPatel
H. Ferrence
Ich
möchte
Vielleicht
Arunendra
Richtig @Arunendra ... das war genau die Dokumentationsseite, auf der ich die Cron-Protokolleinträge eingerichtet habe. Warum erhalte ich meine Popup-Warnung / Fehlermeldung?
H. Ferrence

Antworten:

14

Schneiden Sie die cron_scheduleTabelle ab und prüfen Sie, ob sie nach einigen Minuten wieder mit geplanten Aufgaben gefüllt wird.

Rau, ich weiß, sollte dir aber eine Antwort geben. Vielleicht lohnt es sich auch, dies in einer Inszenierungsumgebung zu tun. zuerst.

Verwenden:

truncate cron_schedule;

Nach einigen Minuten verwenden:

select * from cron_schedule;
George Schiopu
quelle
Danke @GeorgeSchiopu. Mach das jetzt. Ich werde in ein paar Augenblicken zurück posten. Und für das, was es wert ist, würde ich die Site im Moment auf einem Staging-Server betrachten, da wir die Site an dieser Stelle einfach erstellen. Oder zumindest versuchen, es zu bauen. Magento 2.0 scheint sehr
fehlerhaft
Schauen Sie sich mein OQ mit der neuesten Änderung @GeorgeSchiopu an. Danke für die Hilfe.
H. Ferrence
Cool, @ H.Ferrence, froh, dass das geholfen hat.
George Schiopu
@ H.Ferrence Kannst du meine Antwort bitte als "die Auserwählte" markieren, wenn sie dir bei der Lösung des Problems geholfen hat? Es könnte sich für andere als vorteilhaft erweisen, das zu sehen (... und ich habe nur mehr als 1 Jahr gebraucht, um das zu realisieren!). Vielen Dank.
George Schiopu
1

Geben Sie den Benutzer an, mit dem der Befehl ausgeführt wird. Verwenden Sie nicht root dafür, sondern nur den Magento-Benutzer. Zum Beispiel:

*/1 * * * * username /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento cron:run > /home/abcdefg/public_html/var/log/magento.cron.log&
*/1 * * * * username /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/update/cron.php > /home/abcdefg/public_html/var/log/update.cron.log&
*/1 * * * * username /usr/local/bin/php -c /usr/local/lib/php.ini /home/abcdefg/public_html/bin/magento setup:cron:run > /home/abcdefg/public_html/var/log/setup.cron.log&

Beispiel von meinem Server (CENTOS 7), der gut funktioniert:

*/1 * * * * myuser php -c /etc/php.ini /srv/html/path_to_magento/bin/magento cron:run > /srv/html/path_to_magento/var/log/cron.log
Tom
quelle
1

Scheint ab und zu mit meiner Vagrant-Maschine zu passieren. Ich erhielt den gleichen Hinweis. Alles, was ich tun musste, um ihn loszuwerden, war, Daten neu zu indizieren, indem ich:

PHP Bin / Magento Indexer: Neuindizierung

Tyler Voll
quelle
1

Sie sollten drei Dinge überprüfen:

  • sudo service cron status um zu überprüfen, ob der Dienst auf dem Server ausgeführt wird

  • ls -la und überprüfen Sie, ob Ihre Dateien Benutzer & Gruppe mit denen übereinstimmen, die Sie auf dem Cron konfiguriert haben crontab -u xxx -e

  • select * from cron_schedule und überprüfen Sie, ob die Cron-Tabelle gefüllt ist.

JokiRuiz
quelle
1

Folgendes ist nützlich:

  1. MySQL-Tabelle "cron_schedule" ist Ihr Freund, öffnen Sie phpmyadmin oder einen beliebigen MySQL-Client. Führen Sie Folgendes aus:

wähle * aus cron_schedule;

Suchen Sie nach den Spalten "created_at", "execute_at" und "messeges", um hilfreiche Informationen zum Arbeiten oder Ausführen von Cron zu erhalten.

Geben Sie hier die Bildbeschreibung ein

  1. Verwenden Sie ssh, um eine Verbindung zum Server herzustellen, und führen Sie den Befehl cron manuell aus, wenn "Jobs nach Zeitplan ausführen" angezeigt wird. Dies bedeutet, dass die Tabelle cron_schedule aktualisiert wurde.
justnajm
quelle
1

Gemäß den Magento Dev Docs ,

Alle Cron-Daten werden in die cron_scheduleTabelle im geschrieben Magento database. Die Tabelle enthält eine Historie der Cron-Jobs, einschließlich:

  • Job ID und Code
  • Status
  • Erstellungsdatum
  • Geplantes Datum
  • Ausführungsdatum
  • Fertigdatum

Um Datensätze in der Tabelle anzuzeigen, melden Sie sich in der Befehlszeile bei der Magento-Datenbank an und geben Sie ein

SELECT * von cron_schedule;

Usman Yousaf
quelle
-1

Öffnen Sie cron.phpim Stammverzeichnis des Magento-Verzeichnisses und platzieren Sie:

Mage::log('cron is running', null, 'myCronLog.log'); 

Überprüfen Sie diese Datei nach einiger Zeit und prüfen Sie, ob eine Protokolldatei unter generiert wurde oder nicht var/log. Wenn es generiert wird, läuft Ihr Cron.

Arvind Hathiya
quelle
3
Dies funktioniert nur für magento1, nicht für magento2. Mage :: existiert nicht mehr in Magento 2, Sie müssen das loggerInterface wie hier beschrieben verwenden: magento.stackexchange.com/questions/92434/…
tecjam
Weiß jemand, wie man dieses Problem in Magento 2 löst?
H. Ferrence