Anpassa crons-referens
I det här avsnittet får du hjälp med att konfigurera konstanter och (valfritt) kundgrupper för anpassade moduler. Om din anpassade modul behöver schemalägga aktiviteter regelbundet måste du skapa en crontab för den modulen. En crontab är en cron-jobbkonfiguration.
Du kan också konfigurera en anpassad grupp, vilket bland annat gör att du kan köra cron-jobb som definierats i den gruppen oberoende av andra cron-jobb.
En stegvis självstudiekurs finns i Konfigurera anpassade cron-jobb och cron-grupper (självstudiekurs).
En översikt över cron-jobb finns i Konfigurera cron-jobb.
Konfigurera kundgrupper
I det här avsnittet beskrivs hur du kan skapa en cron-grupp för en anpassad modul. Om du inte behöver göra det fortsätter du med nästa avsnitt.
En cron-grupp är en logisk grupp som gör att du enkelt kan köra kron för mer än en process i taget. I de flesta Commerce-moduler används kronigruppen default
. I vissa moduler används gruppen index
.
Om du implementerar cron för en anpassad modul kan du välja att använda gruppen default
eller en annan grupp.
Så här konfigurerar du en cron-grupp för modulen:
Skapa en crontab.xml
-fil i modulkatalogen:
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
För en grupp bör filen ha följande innehåll:
<?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>
Var:
group_name
job_name
classpath
method
classpath
att anropa.time
Resultatet crontab.xml
med två grupper kan se ut så här:
<?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>
Se till exempel Magento_Customer crontab.xml.
Ange alternativ för Cron-grupp
Du kan deklarera en ny grupp och ange dess konfigurationsalternativ (som alla körs i butiksvyn) via filen cron_groups.xml
som finns i:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Nedan visas ett exempel på filen 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>
Var:
schedule_generate_every
cron_schedule
.schedule_ahead_for
cron_schedule
.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Inaktivera ett cron-jobb
Kronijobb har inte en disable
-funktion som vi har för observatörer. Ett cron-jobb kan dock inaktiveras med följande teknik: schedule
en tid som innehåller ett datum som aldrig kommer att inträffa.
Inaktivera t.ex. cron-jobbet visitor_clean
som definierats i modulen Magento_Customer
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Om du vill inaktivera cron-jobbet visitor_clean
skapar du en anpassad modul och skriver om visitor_clean
cron-jobbet schedule
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Nu har kron-jobbet visitor_clean
ställts in att köras kl. 00:00 den 30 februari - vid ett datum som aldrig inträffar.