logo

パレット - カラフルに🎨

Palette — ビジュアルページビルダー、デザインの専門知識は不要です。

ライブデモ パレットをダウンロード

Scroll
15/04/2025, by Ivan

cron の設定はウェブサイトを構築する上で重要なステップであり、検索インデックスの作成、コアやモジュールの更新確認、一時ファイルの削除など、サイトのリソースを維持するのに役立ちます。

適切に設定された cron ジョブは、多くのタスクを管理します:

cron とは?

cron は、指定した間隔でコマンドを実行するデーモンです。これらのコマンドは「cron ジョブ」と呼ばれます。cron は Unix、Linux、Mac のサーバーで利用できます。Windows サーバーでは、コマンドを実行するために Scheduled Tasks(タスクスケジューラ) を使用します。cron ジョブは時刻でトリガーされるアクションで、通常は(そして最も効率的には)ホスティングサーバーによって実行されますが、リモートサーバーや、さらにはローカルマシンからトリガーすることもできます。

起こることとしては、cron ジョブが、たとえば http://www.example.com/cron.php?cron_key=0MgWtfB33FYbbQ5UAC3L0LL3RC0PT3RNUBZILLA0Nf1Re のような、サイト上の cron.php ファイルにアクセスします。cron.php の正確な URL は、管理 > レポート > ステータスレポート(admin/reports/status)のステータスレポートにある「Cron Maintenance Tasks(Cron メンテナンスタスク)」セクションで確認できます。

cron を有効にする

最も簡単な方法は、組み込みの「Automated Cron(自動 Cron)」システムを使って Drupal に処理を任せることです(デフォルトでそうなっています)。Automated Cron は、管理 > 設定 > システム > Cron(admin/config/system/cron)で管理できます。デフォルトの頻度は 3 時間ごとです。これにより、cron はユーザーのリクエスト中に、3 時間に 1 回を超えない頻度で実行されます。トラフィックの少ないサイトでは、それでも cron ジョブを作成する方が有益な場合があることに注意してください。Automated Cron を無効にするには、「Run cron every(cron を実行する間隔)」を「Never(実行しない)」に設定します。

自動 cron システムはシステムの cron デーモンを使用しないため、すべての環境で動作します。代わりに、Drupal は各リクエストの最後に cron が最後に実行された時刻を確認し、時間が経ちすぎている場合は、そのリクエストの一部として cron タスクを実行します。欠点は 2 つあります:(1) cron タスクは Drupal がリクエストを処理するときにのみ実行されること、(2) cron 実行のリソース負荷がユーザーのリクエストに加わり、複雑なサイトではそのリクエストが遅くなったり、メモリ制限を超えたりする可能性があることです。

2 つ目の方法(どの Drupal バージョンにも適用可能)は、cron ジョブを作成する か、EasyCronCronless のようなサードパーティの cron サービスなど、cron を実行する別の外部手段を使うことです。この方法はより信頼性が高く(常にスケジュールどおりに実行されるため)、リソースの消費も少なくなります(cron 処理がページリクエストに加わらないため)。可能であれば、これが一般に cron を実行する好ましい方法です。外部 cron ジョブを設定した場合は、Drupal の組み込み cron システムを完全に無効にできることに注意してください。

Automated Cron を無効にする

パフォーマンス上の理由から、あるいは cron を外部トリガーからのみ実行したい場合は、自動 cron システムを無効にしたいこともあるでしょう。

これは、管理 > 設定 > システム > Cron(admin/config/system/cron)で「Run cron every(cron を実行する間隔)」を「Never(実行しない)」に設定することで行えます。

Drupal 8 で cron を無効にするもう一つの方法は、settings.php ファイルに次の行を追加することです:

$config['automated_cron.settings']['interval'] = 0;

これは実質的に admin/config/system/cron を「Never(実行しない)」に設定し、管理ユーザーによって上書きされるのを防ぎます。