Anpassen der Cron-Referenz
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_namejob_nameclasspathmethodclasspath aufzurufenden Instanz.timeDie 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_everycron_schedule geschrieben werden.schedule_ahead_forcron_schedule geschrieben werden.schedule_lifetimehistory_cleanup_everyhistory_success_lifetimehistory_failure_lifetimeuse_separate_processDeaktivieren 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 auf 00 % :00 30. Februar eingestellt - an dem Datum, das nie eintreten wird.