System Cron startet jede Minute Magento 2 Cron:
$ crontab -l
*/1 * * * * /usr/bin/php /home/user/prj/mage2/bin/magento cron:run >> /home/user/prj/mage2/var/log/cron.log
Ich sehe, dass Ran jobs by schedule.
jede Minute eine neue Zeile in das Protokoll eingefügt wird.
Dies sind meine Einstellungen für meine Aufgabe:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="my_own" instance="\Vendor\Module\Cron\Task" method="execute">
<schedule>...</schedule>
</job>
</group>
</config>
Diese Einstellungen führen meinen Job tatsächlich alle 15 Minuten aus (meine eigene Nachricht wird alle 15 Minuten zum Protokoll hinzugefügt):
<schedule>* * * * *</schedule>
<schedule>*/1 * * * *</schedule>
Das ist mein Log:
...
Ran jobs by schedule.
Ran jobs by schedule.
Ran jobs by schedule.
My own job is started.
Ran jobs by schedule.
...
Dies sind Magento 2 Cron-Einstellungen:
Wie kann ich festlegen <schedule>
, dass meine Aufgabe alle 1 Minute ausgeführt wird?
<schedule>* * * * *</schedule>
<schedule>* * * * *</schedule>
läuft meine Aufgabe alle 15 Minuten :(<schedule>* * * * *</schedule>
Wahrscheinlich gibt es dann einige Magento 2-Konfigurationseinstellungen, die Startaufgaben mehr verhindern einmal in 15 min?cron_schedule
TabelleAntworten:
Es gibt 2 Gruppen in Magento 2 Cron:
index
&default
. Aufgaben / Jobs, die inindex
Gruppen zusammengefasst werden, beginnen alle 1 Minute (Standardeinstellung):Aufgaben / Jobs, die in
default
Gruppen zusammengefasst werden, werden alle 15 Minuten gestartet (Standardeinstellung):quelle
Es scheint, dass Cron-Jobs in Magento 2 durch ihre Einstellungen begrenzt sind, die in der Cron-Gruppe definiert sind, zu der sie gehören. Ich bin mir nicht sicher, ob dies ein Fehler oder eine Funktion ist.
Alex Gusev weist bereits in seiner Antwort darauf hin , aber um es etwas näher zu erläutern: In Magento 2 gibt es standardmäßig 2 Cron-Gruppen:
default
undindex
. Diese sind inMagento_Indexer/etc/cron_groups.xml
und definiertMagento_Cron/etc/cron_groups.xml
. Zum Beispiel:Diese Cron-Gruppe bestimmt die Standard- / globalen Werte für jeden Cron-Job. Ich bin mir nicht sicher, wie es funktioniert, aber nach meinen eigenen Tests kann man einen Cron nicht so einstellen, dass er öfter pro Stunde läuft als in der
schedule_generate_every
Einstellung festgelegt. Wenn Sie zum Beispiel so etwas haben:Obwohl Sie vielleicht erwarten, dass dieser Cronjob jede Minute geplant wird , beschränken ihn die globalen Einstellungen auf einen Mindestzeitraum von 15 Minuten .
Um dies zu lösen, können Sie entweder:
cron_groups.xml
Datei hinzufügen (vorausgesetzt, der Client hat noch nicht an den Konfigurationseinstellungen herumgebastelt):Beispieldatei
config_groups.xml
:Fehler? Merkmal? Irreführende Konfigurationseinstellung? Ich bin mir nicht sicher, wie ich das nennen soll. Sie könnten argumentieren, dass es gut ist, dass Sie einen globalen Bereich haben, der mehr als 100 Module einschränken kann, um zu versuchen, jede Minute einen Cron auszuführen. Auf der anderen Seite: Wenn ich ein Entwickler bin, der weiß, was er tut, kann es gute Gründe geben, jede Minute zu laufen.
Wenn das Ausführen jeder Minute obligatorisch ist, kann es auch sinnvoll sein, eine ganz neue Cron-Gruppe für Ihre Konfiguration hinzuzufügen (verschmutzen Sie die
index
-cron-Gruppe nicht mit nicht indizierenden Cron-Jobs). Aber das ist eine Frage der Architektur und das überlasse ich Ihnen.quelle
schedule_generate_every
weist Magento an, den Zeitplan für diese Cron-Gruppe alle 15 Minuten zu aktualisieren. Wenn Sie einen Job festlegen, der jede Minute in dieser Gruppe ausgeführt wird, generiert Magento 15cron_schedule
Einträge für diesen Job, einen für jede Minute.Um einmal pro Minute zu planen, müssen Sie geben
* * * * *
Von links nach rechts steht der 1. Stern für die Minute (Bereich: 0-59). Der 2. Stern steht für die Stunde (Bereich: 0-23). Der 3. Stern steht für den Tag des Monats (Bereich: 1-31). Der 4. Stern steht für den Monat des Jahres (Bereich: 1-). 12) 5. steht für Wochentag (Bereich: 1-7, 1 steht für Montag)
Informationen zum Cron-Timing finden Sie unter dem Link: http://www.nncron.ru/help/EN/working/cron-format.htm
Referenzlink zum Festlegen des benutzerdefinierten Cron: http://www.dckap.com/blog/how-to-set-and-configure-custom-cron-jobs-in-magento-2/
quelle
Aus Ihrer Frage geht nicht hervor, welchen Zeitplan Sie möchten. Hier sind also beide:
Alle 1 Minute:
Alle 15 Minuten:
Dieses Tool kann zum Erstellen / Debuggen von Cron-Zeitplänen hilfreich sein: https://crontab.guru/
quelle
Bitte versuche
zum Planen von Cron in jeder Minute. Sie können Ihre Cron-Einträge in der Tabelle cron_schedule überprüfen, um die von Magento vorgenommenen Planungseinträge anzuzeigen.
quelle