cronジョブ
弊社のインフラストラクチャでは、コンテナ技術を採用しており、すべてのサイトが独自のcrontabを持つ隔離されたコンテナで実行されます。そのため、各サイトのコンテナでサーバーのcronジョブを設定することができます。
WordPress既存のcronジョブを使用する方法はこちらをご覧ください。
サーバーのcron設定を記述する
crontabで指定するタスクは、以下2つの要素で構成されます。
- cronが実行される頻度を定義する一連の数字とアスタリスク
- サーバーで実行されるコマンド
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 GeneratorやCronitorなど、式のフォーマット方法に関するリソースは多数存在します。以下は一般的な例です。
- 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ジョブをアップロードする場合は、以下の手順に従ってください。
- SSHでサイトコンテナにアクセスします
- 以下のコマンドを実行します
crontab -e
- 任意のテキストエディターを開きます(特にこだわりがなければnanoがお勧めです)
- ファイルの最後にcronコマンドを貼り付けます
- ファイルを閉じると、crontabが更新され、
crontab: installing new crontab
というメッセージが表示されます
SSHを使用するのが不安な場合は、弊社カスタマーサポートまでご依頼ください。
サーバーのcronジョブに関するKinstaのポリシー
- 弊社サーバーのcronジョブのサポートは、コンテナのcrontabに設定した通りのcronジョブをアップロードするか、編集することに限定されます。crontabで実行されるコマンドの記述が不安なお客様は、経験のある開発者と協力して記述してください。
- cronジョブの最小間隔は5分です。5分間隔よりも頻繁に実行されるサーバーのcronジョブはアップロードをお控えください。カスタマーサポートに追加をご依頼された場合は、5分間隔への変更をご提案させていただきます。5分間隔より頻繁に実行するcronジョブが必要な場合は、専用サーバーが必要になります。専用サーバーでは、1分間隔のcronジョブを実行することができます。
- crontabの上部に記述されたcronジョブは、編集したり、移動したりしないでください。これは、弊社システムエンジニアによって記述されたものであり、ファイルの最上部に位置する必要があります。
- カスタムサーバーのcronジョブは、crontabファイルの一番下に追加してください。ファイルの一番上に追加してしまうと、Kinstaのメンテナンススクリプト、ステージングシステム、またはバックアップシステムが、cronジョブを上書きしてしまう可能性があります。