Anpassen der Cron-Referenz
Erstellt für:
- Experte
- Admin
- Entwickler
Dieses Thema hilft Ihnen beim Einrichten von crontabs und optional crongroups für benutzerdefinierte Module. Wenn Ihr benutzerdefiniertes Modul regelmäßig Aufgaben planen muss, müssen Sie für dieses Modul eine crontab einrichten. Eine crontab ist eine Cron-Auftragskonfiguration.
Optional können Sie eine benutzerdefinierte Gruppe einrichten, die es Ihnen unter anderem ermöglicht, in dieser Gruppe definierte Cron-Aufträge unabhängig von anderen Cron-Aufträgen auszuführen.
Eine schrittweise Anleitung finden Sie unter Konfigurieren von benutzerdefinierten Cron-Aufträgen und Cron-Gruppen (Tutorial).
Einen Überblick über Cron-Aufträge finden Sie 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 tun müssen, fahren Sie mit dem nächsten Abschnitt fort.
Eine Cron-Gruppe ist eine logische Gruppe, mit der Sie Cron einfach für mehr als einen Prozess gleichzeitig ausführen können. Die meisten Commerce-Module verwenden die default
Cron-Gruppe; einige Module verwenden die index
.
Wenn Sie Cron für ein benutzerdefiniertes Modul implementieren, können Sie die 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
aufzurufenden Instanz.time
Die resultierende crontab.xml
mit zwei Gruppen könnte 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>
Als Beispiel dient Magento_Customer_crontab.xml.
Angeben der Cron-Gruppenoptionen
Sie können eine neue Gruppe deklarieren und ihre Konfigurationsoptionen (die alle im Bereich der Store-Ansicht ausgeführt werden) über die cron_groups.xml
-Datei angeben, die sich in befindet:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Nachfolgend finden Sie ein Beispiel für die 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
geschrieben werden.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Deaktivieren von Cron-Aufträgen
Cron-Aufträge haben keine disable
Funktion wie wir für Beobachter. Ein Cron-Auftrag kann jedoch mithilfe der folgenden Technik deaktiviert werden: schedule
einer Zeit, die ein Datum enthält, das niemals eintreten wird.
Deaktivieren Sie beispielsweise den visitor_clean
Cron-Auftrag, der in Magento_Customer
Modul definiert ist:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Um den visitor_clean
Cron-Auftrag zu deaktivieren, erstellen Sie ein benutzerdefiniertes Modul und schreiben Sie die visitor_clean
Cron-schedule
neu:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Jetzt wurde der visitor_clean
Cron-Auftrag so eingestellt, dass er am 30. Februar um 00:00 Uhr ausgeführt wird - an dem Datum, das nie eintreten wird.