cronジョブ

弊社のインフラストラクチャでは、コンテナ技術を採用しており、すべてのサイトが独自のcrontabを持つ隔離されたコンテナで実行されます。そのため、各サイトのコンテナでサーバーのcronジョブを設定することができます。

WordPress既存のcronジョブを使用する方法はこちらをご覧ください。

サーバーのcron設定を記述する

crontabで指定するタスクは、以下2つの要素で構成されます。

  1. cronが実行される頻度を定義する一連の数字とアスタリスク
  2. サーバーで実行されるコマンド

cronを記述する際は、実行したいコマンドと実行頻度の2つを定義します。

例えば、以下のような状況ではサイトコンテナでcronジョブを実行することがあります。

  • リンク切れのスキャンとレポートの作成
  • 投稿を事前にスケジュールし時間通りに公開
  • ユーザー活動ログの作成
  • 営業活動レポートの作成とメール送信
  • ユーザーへのパスワード期限切れ通知の送信

これらのタスクを実行するには、WordPressのルートディレクトリまたは安全なフォルダに配置されたカスタムPHPスクリプトが必要になります。スクリプトは必要なタスクを処理し、サーバー上で実行します。cronジョブは、特定の時間と間隔で自動的にスクリプトを実行します。

cron式はcronジョブが実行されるタイミングと頻度を決定します。以下5つのフィールドで構成されます。

  • *:分(0〜59)
  • *:時間(0〜23)
  • *:日(1〜31)
  • *:月(1〜12) (1-2)
  • *:曜日(0〜6)

例えば、毎週日曜日の午前2時にスクリプトを実行するには、以下のcronコマンドを設定します。

0 2 * * 0 php /path-to-your-script/script-name.php >/dev/null 2>&1

crontabの構文を学ぶ場合は、The Open Groupのドキュメントが有用です。Crontab GeneratorCronitorなど、式のフォーマット方法に関するリソースは多数存在します。以下は一般的な例です。

  • 30分ごとにcronジョブを実行:*/30 * * * *を使用する─*/30はプロセスが30分ごと(例:12:00、12:30)に実行されることを保証する。*/をつけずに30とすると、30分にのみ(例:12:30、13:30)に実行されます
  • 1時間ごとにcronジョブを実行:0 * * * *
  • 毎日午前12:00にcronジョブを実行:0 0 * * *
  • 金曜日の午前12:00にcronジョブを実行:0 0 * * 5
  • 毎月1日の午前12:00にcronジョブを実行:0 0 1 * *

サーバーのcron設定を追加する

cronジョブの準備が整ったら、以下のいずれかの方法でコンテナに追加することができます。

  • お客様自身でcrontabにcronジョブをアップロードする
  • 弊社カスタマーサポートに依頼して、crontabにcronジョブをアップロードする

お客様自身でcronジョブをアップロードする場合は、以下の手順に従ってください。

  1. SSHでサイトコンテナにアクセスします
  2. 以下のコマンドを実行します
    crontab -e
  3. 任意のテキストエディターを開きます(特にこだわりがなければnanoがお勧めです)
  4. ファイルの最後にcronコマンドを貼り付けます
  5. ファイルを閉じると、crontabが更新され、crontab: installing new crontabというメッセージが表示されます
任意のテキストエディターで「crontab -e」を実行
任意のテキストエディターで「crontab -e」を実行

SSHを使用するのが不安な場合は、弊社カスタマーサポートまでご依頼ください。

サーバーのcronジョブに関するKinstaのポリシー

  • 弊社サーバーのcronジョブのサポートは、コンテナのcrontabに設定した通りのcronジョブをアップロードするか、編集することに限定されます。crontabで実行されるコマンドの記述が不安なお客様は、経験のある開発者と協力して記述してください。
  • cronジョブの最小間隔は5分です。5分間隔よりも頻繁に実行されるサーバーのcronジョブはアップロードをお控えください。カスタマーサポートに追加をご依頼された場合は、5分間隔への変更をご提案させていただきます。5分間隔より頻繁に実行するcronジョブが必要な場合は、専用サーバーが必要になります。専用サーバーでは、1分間隔のcronジョブを実行することができます。
  • crontabの上部に記述されたcronジョブは、編集したり、移動したりしないでください。これは、弊社システムエンジニアによって記述されたものであり、ファイルの最上部に位置する必要があります。
  • カスタムサーバーのcronジョブは、crontabファイルの一番下に追加してください。ファイルの一番上に追加してしまうと、Kinstaのメンテナンススクリプト、ステージングシステム、またはバックアップシステムが、cronジョブを上書きしてしまう可能性があります。
この記事は役に立ちましたか?