Crons プロパティ
Adobe Commerceはcrons プロパティを使用して、繰り返し作業をスケジュールします。 特定のタスクを特定の時間帯に実行するようにスケジュールを設定するのに最適です。 読み取り専用の環境の性質により、Adobe Commerce on cloud infrastructure プロジェクトのweb インスタンスで一度に1つのcron ジョブのみを実行できます。 長時間実行しているタスクを、キューに登録されている小さなタスクに分割することをお勧めします。 または、 ワーカーインスタンス を構築することもできます。
Adobeでは、cronsを ファイルシステム所有者として実行することをお勧めします。 notは、cronsをrootとして、またはweb サーバーユーザーとして実行します。
この設定は、複数のデフォルトのcron ジョブを持つAdobe Commerceのオンプレミスのデプロイメントとは異なります。 設定ガイドの「cron ジョブの設定」を参照してください。
cron ジョブの設定
crons プロパティは、スケジュールでトリガーされるプロセスを説明します。 各ジョブには名前と次のオプションが必要です。
spec- スケジュールに使用されるcron式。cmd-startおよびstopで実行するコマンド。shutdown_timeout– (オプション) cron ジョブがキャンセルされた場合、これは、ジョブまたはプロセスを停止するためにSIGKILL シグナルが送信されるまでの秒数です。 デフォルトは10秒です。timeout– (オプション) cron ジョブがタイムアウトまでに実行できる最大時間です。 デフォルトでは、許可される最大値は86400秒(24時間)です。
デフォルトでは、すべてのCommerce クラウドプロジェクトには、.magento.app.yaml ファイルに次のデフォルト crons設定があります。
crons:
cronrun:
spec: "* * * * *"
cmd: "php bin/magento cron:run"
プロジェクトでカスタム cron ジョブが必要な場合は、それらをデフォルトのcrons設定に追加できます。 Cron ジョブの作成を参照してください。
crontab
Adobe Commerceでは、ステージング環境と実稼動環境でセルフサービス crons設定をサポートするために、Pro プロジェクトにのみ自動クローン設定オプションが追加されました。 このオプションが有効になっている場合は、crontabを使用してcron設定を確認できます。 これは、スタータープロジェクトで利用できる not です。
crontabを使用してPro プロジェクトの設定を確認できますが、Adobe Commerceでは、クラウド インフラストラクチャにデプロイされたサイトのcron ジョブの実行にcrontabを使用しません。
Pro環境でのcron設定を確認するには:
-
SSHを使用してリモート環境にログインします。
-
スケジュールされたcron プロセスのリストを表示します。
code language-shell crontab -lnote NOTE crontab -lコマンドでCommand not foundエラーが返された場合(Pro ステージング環境および実稼動環境のみ)、Adobe Commerce サポートチケット を送信して、プロジェクトで自動crons セルフサービス設定オプションを有効にする必要があります。
次の例は、デフォルトのcrons設定のみを持つ環境のcrontab出力を示しています。
username@hostname:~$ crontab -l
# Crontab is managed by the system, attempts to edit it directly will fail.
SHELL=/etc/platform/6fck2obu3244c/cron-run
MAILTO=""
# m h dom mon dow job_name
* * * * * cronrun
cron ジョブの作成
cron ジョブには、スケジュールとタイミングの指定と、スケジュールされた時間に実行するコマンドが含まれます。 スターター環境とPro integration環境の場合、最小間隔は5分に1回です。 Pro ステージング環境および実稼動環境の場合、最小間隔は1分あたり1回です。 Adobe Commerce クラウド インフラストラクチャでは、crons セクションの.magento.app.yaml ファイルにカスタム cron ジョブを追加します。 スケジュール設定の一般的な形式はspecで、実行するコマンドまたはカスタムスクリプトを指定する形式はcmdです。
仕様
Adobe Commerceは、crons仕様(仕様)に5値式を使用しています:* * * * *
- Minute (0 ~ 59)すべてのStarterおよびPro環境で、cron ジョブでサポートされる最小頻度は5分です。 管理者の設定が必要な場合があります。
- 時間(0 ~ 23)
- 月の日(1 ~ 31)
- 月(1 ~ 12)
- 曜日(0~6)(日曜日~土曜日、7は一部のシステムでは日曜日)
一部の例:
00 */3 * * *は、最初の1分(午前12:00、午前3:00、午前6:00)に3時間ごとに実行されます20 */8 * * *は20分(午前12:20、午前8:20、午後4:20)に8時間ごとに実行されます00 00 * * *が1日1回、午前0時に実行されます00 * * * 1は週1回、月曜日の午前0時に実行されます。
.magento.app.yaml ファイルで指定されたcrons時間は、データベースのストア設定値で指定されたタイムゾーンではなく、サーバーのタイムゾーンに基づいています。スケジュールを決定する際には、タスクを完了するのにかかる時間を考慮します。 例えば、3時間ごとにジョブを実行し、タスクの完了に40分かかる場合、スケジュールされたタイミングを変更することを検討します。
コマンド
cmdは、実行するコマンドまたはカスタムスクリプトを指定します。 コマンドスクリプト形式には、次のものが含まれます。
<path-to-php-binary> <project-dir>/<script-command>
例:
crons:
spec: "00 */8 * * *"
cmd: "/usr/bin/php /app/abc123edf890/bin/magento export:start catalog_category_product"
この例では、<path-to-php-binary>は/usr/bin/phpです。 プロジェクト IDを含むインストール ディレクトリは/app/abc123edf890/bin/magento、スクリプト アクションはexport:start catalog_category_productです。
プロジェクトにカスタム cron ジョブを追加する
Adobe Commerce on cloud infrastructure platformでは、.magento.app.yaml ファイルのcrons セクションにカスタマイズを追加できます。
integration環境の場合、最小間隔は5分に1回です。 Pro ステージング環境および実稼動環境の場合、最小間隔は1分あたり1回です。 デフォルトの最小値より多くの頻度を設定することはできません。Adobe Commerce Pro プロジェクトでは、.magento.app.yaml ファイルを使用してステージング環境と実稼動環境にカスタム cron ジョブを追加する前に、自動cron機能をプロジェクトで有効にする必要があります。 この機能が有効になっていない場合は、Adobe Commerce サポートチケット を送信して自動実行を有効にします。
カスタム cron ジョブを追加するには:
-
ローカル開発環境で、Adobe Commerce
/appディレクトリの.magento.app.yamlファイルを編集します。 -
「
crons」セクションで、次の形式を使用してカスタマイズを追加します。code language-yaml crons: <cron_name_1>: spec: "<schedule_time>" cmd: "<schedule_command>" <cron_name_2>: spec: "<schedule_time>" cmd: "<schedule_command>"次の例では、
productcatalogジョブは、8時間ごとに、1時間後20分ごとに製品カタログを書き出します。code language-yaml crons: magento: spec: '* * * * *' cmd: 'php bin/magento cron:run' productcatalog: spec: '20 */8 * * *' cmd: 'bin/magento export:start catalog_product_category' -
コードの変更を追加、コミット、プッシュします。
code language-bash git add .magento.app.yaml && git commit -m "cron config updates" && git push origin <branch-name>
cron ジョブの更新
カスタマイズされたジョブを追加、削除、または更新するには、.magento.app.yaml ファイルのcrons セクションで設定を変更します。 次に、ステージング環境と実稼動環境に変更をプッシュする前に、リモート integration環境で更新をテストします。
cron ジョブを無効にする
パフォーマンスの問題を防ぐために、インデックスの再作成やキャッシュのクリーニングなどのメンテナンスタスクを完了する前に、cron ジョブを手動で無効にすることができます。 ece-tools CLI コマンド cron:disableを使用して、すべてのcron ジョブを無効にし、アクティブなcron プロセスを停止できます。
cron ジョブを無効にするには:
-
ローカル ワークステーションで、プロジェクト ディレクトリに移動します。
-
SSHを使用してリモート環境にログインします。
code language-bash magento-cloud ssh -
cron ジョブを無効にし、アクティブなcron プロセスを停止します。
code language-shell ./vendor/bin/ece-tools cron:disable -
必要なメンテナンスタスクを完了したら、cron ジョブを再度有効にします。
code language-shell ./vendor/bin/ece-tools cron:enable
cron ジョブのトラブルシューティング
Adobeは、Adobe Commerce on cloud infrastructure パッケージを更新し、Adobe Commerce on cloud infrastructure プラットフォームでのcron処理を最適化し、cron関連の問題を修正しました。 cron処理で問題が発生した場合は、プロジェクトで最新バージョンのece-tools パッケージが使用されていることを確認してください。 ECE-Toolsの更新を参照してください。
cron処理情報は、各環境のアプリケーションレベルのログファイルで確認できます。 アプリケーションログ を参照してください。
cron関連の問題のトラブルシューティングについては、次のAdobe Commerce サポート記事を参照してください。