crons リファレンスのカスタマイズ
このトピックでは、カスタムモジュール用にcrontabsとcron グループを設定する方法を説明します。 カスタムモジュールでタスクを定期的にスケジュールする必要がある場合は、そのモジュールにcrontabを設定する必要があります。 crontabはcron ジョブ設定です。
オプションで、カスタムグループを設定できます。特に、そのグループで定義されたcron ジョブを他のcron ジョブとは独立して実行できます。
ステップバイステップチュートリアルについては、 カスタム cron ジョブとcron グループの設定(チュートリアル) を参照してください。
cron ジョブの概要については、cron ジョブの設定を参照してください。
cron グループの設定
この節では、カスタムモジュールのcron グループをオプションで作成する方法について説明します。 これを行う必要がない場合は、次のセクションに進みます。
cron グループは、一度に複数のプロセスでcronを簡単に実行できる論理グループです。 ほとんどのCommerce モジュールはdefault cron グループを使用しています。一部のモジュールはindex グループを使用しています。
カスタムモジュールにcronを実装する場合は、default グループまたは別のグループを使用できます。
モジュールのcron グループを設定するには:
モジュールディレクトリにcrontab.xml ファイルを作成します。
<your component base dir>/<vendorname>/module-<name>/etc/crontab.xml
1つのグループの場合、ファイルには次の内容が含まれている必要があります。
<?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>
どこで:
group_namejob_nameclasspathmethodclasspathのメソッド。time2つのグループを持つ結果のcrontab.xmlは次のようになります。
<?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>
例として、Magento_Customer crontab.xmlを参照してください。
Cron グループオプションの指定
新しいグループを宣言し、次の場所にあるcron_groups.xml ファイルを使用して、その構成オプション(すべてストアビュースコープで実行)を指定できます。
<your component base dir>/<vendorname>/module-<name>/etc/cron_groups.xml
次に、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>
どこで:
schedule_generate_everycron_schedule テーブルに書き込まれる頻度(分単位)。schedule_ahead_forcron_schedule テーブルに書き込まれる前の時間(分単位)。schedule_lifetimehistory_cleanup_everyhistory_success_lifetimehistory_failure_lifetimeuse_separate_processcron ジョブを無効にする
Cron ジョブには、 オブザーバーと同様にdisable機能がありません。 ただし、cron ジョブは、次の手法を使用して無効にできます。scheduleは、発生しない日付を含む時間です。
例えば、Magento_Customer モジュールで定義されたvisitor_clean cron ジョブを無効にします。
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 * * *</schedule>
</job>
</group>
...
visitor_clean cron ジョブを無効にするには、カスタムモジュールを作成し、visitor_clean cron ジョブ scheduleを書き換えます。
...
<group id="default">
<job name="visitor_clean" instance="Magento\Customer\Model\Visitor" method="clean">
<schedule>0 0 30 2 *</schedule>
</job>
</group>
...
これで、visitor_clean cron ジョブが2月30日の00:00に実行されるように設定されました。この日付は実行されません。