Anpassen der ECrons-Referenz
Dieses Thema hilft Ihnen beim Einrichten von Registerkarten und optional Cron-Gruppen für benutzerdefinierte Module. Wenn Ihr benutzerdefiniertes Modul Aufgaben periodisch planen muss, müssen Sie eine Kronenregisterkarte für dieses Modul einrichten. Eine crontab ist eine Cron-Auftragskonfiguration.
Optional können Sie eine benutzerspezifische Gruppe einrichten, mit der Sie unter anderem in dieser Gruppe definierte Cron-Aufträge unabhängig von anderen Cron-Aufträgen ausführen können.
Eine schrittweise Anleitung finden Sie unter Konfigurieren von benutzerdefinierten Cron-Aufträgen und Cron-Gruppen (Tutorial).
Einen Überblick über Cron-Aufträge finden Sie unter Konfigurieren von Cron-Aufträgen.
Cron-Gruppen konfigurieren
In diesem Abschnitt wird beschrieben, wie Sie optional eine Cron-Gruppe für ein benutzerdefiniertes Modul erstellen. Wenn Sie dies nicht benötigen, fahren Sie mit dem nächsten Abschnitt fort.
Eine Cron-Gruppe ist eine logische Gruppe, mit der Sie Cron einfach für mehrere Prozesse gleichzeitig ausführen können. Die meisten Commerce-Module verwenden die Cron-Gruppe default
; einige Module verwenden die Gruppe index
.
Wenn Sie Cron für ein benutzerdefiniertes Modul implementieren, können Sie die Gruppe default
oder eine andere Gruppe verwenden.
So konfigurieren Sie eine Cron-Gruppe für Ihr Modul:
Erstellen Sie eine crontab.xml
-Datei in Ihrem Modulverzeichnis:
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Für eine Gruppe sollte die Datei den folgenden Inhalt haben:
<?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="<group_name>">
<job name="<job_name>" instance="<classpath>" method="<method>">
<schedule><time></schedule>
</job>
</group>
</config>
Dabei gilt:
group_name
job_name
classpath
method
classpath
, die aufgerufen werden soll.time
Das resultierende crontab.xml
mit zwei Gruppen kann wie folgt aussehen:
<?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="<job_1_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
<job name="<job_2_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
</group>
<group id="index">
<job name="<job_3_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
<job name="<job_4_name>" instance="<classpath>" method="<method_name>">
<schedule>* * * * *</schedule>
</job>
</group>
</config>
Ein Beispiel finden Sie unter Magento_Customer crontab.xml.
Festlegen von Cron-Gruppenoptionen
Sie können eine neue Gruppe deklarieren und ihre Konfigurationsoptionen (die alle im Bereich der Store-Ansicht ausgeführt werden) über die Datei "cron_groups.xml
"angeben, die sich unter:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Nachfolgend finden Sie ein Beispiel für die Datei cron_groups.xml
:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/cron_groups.xsd">
<group id="<group_name>">
<schedule_generate_every>1</schedule_generate_every>
<schedule_ahead_for>4</schedule_ahead_for>
<schedule_lifetime>2</schedule_lifetime>
<history_cleanup_every>10</history_cleanup_every>
<history_success_lifetime>60</history_success_lifetime>
<history_failure_lifetime>600</history_failure_lifetime>
<use_separate_process>1</use_separate_process>
</group>
</config>
Dabei gilt:
schedule_generate_every
cron_schedule
geschrieben werden.schedule_ahead_for
cron_schedule
.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Cron-Auftrag deaktivieren
Cron-Aufträge verfügen nicht über eine disable
-Funktion, wie wir sie für Beobachter haben. Ein Cron-Auftrag kann jedoch mithilfe der folgenden Technik deaktiviert werden: schedule
eine Zeit, die ein Datum enthält, das nie eintritt.
Deaktivieren Sie beispielsweise den Cron-Auftrag visitor_clean
, der im Modul Magento_Customer
definiert ist:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Um den Cron-Auftrag visitor_clean
zu deaktivieren, erstellen Sie ein benutzerdefiniertes Modul und schreiben Sie den visitor_clean
cron-Auftrag schedule
neu:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Nun wurde der Cron-Auftrag visitor_clean
so eingestellt, dass er am 30. Februar um 00:00 Uhr ausgeführt wird - zu dem Datum, das nie eintreten wird.