Personalizzazione del riferimento crons
Questo argomento consente di impostare le schede cronologiche e facoltativamente i gruppi cron per i moduli personalizzati. Se il modulo personalizzato deve pianificare le attività periodicamente, è necessario impostare una scheda cronologica per tale modulo. Una crontab è una configurazione di processo cron.
Facoltativamente, è possibile impostare un gruppo personalizzato che, tra le altre cose, consente di eseguire i job cron definiti in tale gruppo indipendentemente dagli altri job cron.
Per un'esercitazione dettagliata, vedere Configurare processi cron personalizzati e gruppi cron (esercitazione).
Per una panoramica sui processi cron, vedere Configurare i processi cron.
Configurare i gruppi cron
Questa sezione illustra come creare facoltativamente un gruppo cron per un modulo personalizzato. Se non è necessario eseguire questa operazione, continuare con la sezione successiva.
Un gruppo cron è un gruppo logico che consente di eseguire facilmente cron per più processi alla volta. La maggior parte dei moduli di Commerce utilizza il gruppo cron default
; alcuni moduli utilizzano il gruppo index
.
Se si implementa cron per un modulo personalizzato, è possibile scegliere di utilizzare il gruppo default
o un gruppo diverso.
Per configurare un gruppo cron per il modulo:
Crea un file crontab.xml
nella directory del modulo:
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
Per un gruppo, il file deve avere il seguente contenuto:
<?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>
Dove:
group_name
job_name
classpath
method
classpath
da chiamare.time
Il crontab.xml
risultante con due gruppi potrebbe essere simile al seguente:
<?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>
Ad esempio, consulta Magento_Customer crontab.xml.
Specifica delle opzioni del gruppo di celle
È possibile dichiarare un nuovo gruppo e specificarne le opzioni di configurazione (tutte eseguite nell'ambito della visualizzazione archivio) tramite il file cron_groups.xml
, che si trova in:
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
Di seguito è riportato un esempio del file 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>
Dove:
schedule_generate_every
cron_schedule
.schedule_ahead_for
cron_schedule
.schedule_lifetime
history_cleanup_every
history_success_lifetime
history_failure_lifetime
use_separate_process
Disattivare un processo cron
I processi Cron non dispongono di una funzionalità disable
simile a quella di observers. Tuttavia, è possibile disabilitare un processo cron utilizzando la tecnica seguente: schedule
un'ora che contiene una data che non si verificherà mai.
Disattivare ad esempio il processo cron visitor_clean
definito nel modulo Magento_Customer
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
Per disabilitare il processo cron visitor_clean
, creare un modulo personalizzato e riscrivere il processo cron visitor_clean
schedule
:
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
Ora, il processo cron visitor_clean
è stato impostato per essere eseguito alle 00:00 del 30 febbraio, in una data che non si verificherà mai.