cron ジョブの設定
Commerceのいくつかの機能には、少なくとも1つのcron ジョブが必要で、将来のアクティビティをスケジュールします。 これらのアクティビティの一部を以下に示します。
- カタログ価格ルール
- ニュースレター
- Google サイトマップの生成
- 顧客アラート/通知(製品価格変更、再入荷)
- インデックス再作成
- プライベートセールス(Adobe Commerceのみ)
- 通貨レートの自動更新
- すべてのCommerce電子メール(注文確認と取引確認を含む)
dev/tools/cron.shを実行できなくなりました。UNIX システムは、crontabを使用して特定のユーザーが実行するタスクをスケジュールします。これは、実際にデーモンに「この日付でこのコマンドを実行する」ように指示するcron デーモンへの指示を含むファイルです。 各ユーザーには独自のcrontabがあり、特定のcrontab内のコマンドは、それを所有するユーザーとして実行されます。
Web ブラウザーでcronを実行するには、 ブラウザーで実行するcron.phpのセキュリティ保護を参照してください。
Commerce crontabの作成または削除
この節では、Commerce crontab (つまり、Commerce cron ジョブの設定)を作成または削除する方法について説明します。
crontabは、cron ジョブの実行に使用される設定です。
Commerce アプリケーションでは、様々な設定で実行できるcron タスクを使用します。 PHPのコマンドライン設定は、インデクサーのインデックス再作成、電子メールの生成、サイトマップの生成などを行う一般的なcron ジョブを制御します。
- インストールおよびアップグレード時の問題を回避するには、PHP コマンドライン設定とPHP web サーバープラグインの設定の両方に同じPHP設定を適用することを強くお勧めします。 詳しくは、必要なPHP設定を参照してください。
- マルチノードシステムでは、crontabは1つのノードでのみ実行できます。 これは、パフォーマンスまたはスケーラビリティに関連する理由で複数のweb ノードを設定した場合にのみ適用されます。
Commerce crontabの作成
バージョン 2.2以降、Commerceはcrontabを作成します。 Commerceのcrontabは、Commerce ファイルシステムのオーナー用に設定されたcrontabに追加します。 つまり、他の拡張機能やアプリケーション用にcrontabsを既に設定している場合は、Commerce crontabが追加されます。
Commerceのcrontabは、crontab内の#~ MAGENTO START件と#~ MAGENTO END件のコメント内にあります。
Commerce crontabを作成するには:
-
ファイルシステム所有者としてログインするか、切り替えます。
-
Commerceのインストールディレクトリに移動します。
-
次のコマンドを入力します。
code language-shell bin/magento cron:install [--force]
--forceを使用して、既存のcrontabを書き換えます。
magento cron:installは、crontab内の#~ MAGENTO STARTおよび#~ MAGENTO END件のコメント内の既存のcrontabを書き換えません。magento cron:install --forceは、Commerce コメント以外のcron ジョブには影響しません。
crontabを表示するには、ファイルシステム所有者として次のコマンドを入力します。
crontab -l
サンプルは次のとおりです。
#~ MAGENTO START c5f9e5ed71cceaabc4d4fd9b3e827a2b
* * * * * /usr/bin/php /var/www/html/magento2/bin/magento cron:run 2>&1 | grep -v "Ran jobs by schedule" >> /var/www/html/magento2/var/log/magento.cron.log
#~ MAGENTO END c5f9e5ed71cceaabc4d4fd9b3e827a2b
update/cron.php ファイルはCommerce 2.4.0で削除されました。このファイルがインストールに存在する場合は、安全に削除できます。update/cron.phpおよびbin/magento setup:cron:runへの参照もcrontab'から削除する必要がありますCommerceのcrontabを削除
Commerce アプリケーションをアンインストールする前にのみ、Commerce crontabを削除する必要があります。
Commerceのcrontabを削除するには:
-
としてログインするか、 ファイルシステム所有者に切り替えます。
-
Commerceのインストールディレクトリに移動します。
-
次のコマンドを入力します。
code language-shell bin/magento cron:remove
#~ MAGENTO STARTおよび#~ MAGENTO END コメント以外のcron ジョブには影響しません。コマンドラインからcronを実行する
コマンドオプション:
bin/magento cron:run [--group="<cron group name>"]
ここで--groupは、実行するcron グループを指定します(すべてのグループに対してcronを実行する場合は、このオプションを省略します)
インデックス作成cron ジョブを実行するには、次のように入力します。
bin/magento cron:run --group index
デフォルトのcron ジョブを実行するには、次のように入力します。
bin/magento cron:run --group default
カスタム cron ジョブとグループを設定するには、 カスタム cron ジョブとcron グループの設定を参照してください。
scheduled_at回以降に実行する必要があります。ログ
すべてのcron件のジョブ情報がsystem.logから別のcron.logに移動しました。
デフォルトでは、cron情報は<install_directory>/var/log/cron.logにあります。
cron ジョブからのすべての例外は、\Magento\Cron\Observer\ProcessCronQueueObserver::executeによって記録されます。
cron.logにログインしているだけでなく、
-
ステータスが
ERRORおよびMISSEDの失敗したジョブは、<install_directory>/var/log/support_report.logに記録されます。 -
ステータスが
ERRORのジョブは、常に<install_directory>/var/log/exception.logにCRITICALとして記録されます。 -
ステータスが
MISSEDのジョブは、<install_directory>/var/log/debug.logディレクトリにINFOとして記録されます(開発者モードのみ)。
cron_schedule テーブルにも書き込まれます。 このテーブルには、次のようなcron ジョブの履歴が表示されます。- ジョブ IDとコード
- ステータス
- 作成日
- 予定日
- 実行日
- 完了日
SELECT * from cron_schedule;と入力します。