PHPはサーバー上で動くプログラムで、基本的にはwebブラウザからhttpアクセスがあった時に実行されます。
他にも、コマンドライン(SSH)から実行コマンドを打ち込んで実行させる方法もありますが、「httpアクセスがある」「実行コマンドを打ち込む」など、なにかしらアクションがあってPHPが動きます。
でも、数分毎や毎日決まった時間など、自動でPHPプログラムを動かしたい時などありますよね。
そんな時は、サーバーの「cron」という機能を使えば、PHPプログラムを自動的に動かす事ができます。
サーバー機能なので、コマンドラインからの設定になりますが、コントロールパネルからも設定する事ができます。
とはいえ、レンタルするサーバーによって、実行コマンドの書き方が違います。
頻繁に使う機能でもないので、コマンドの書き方を忘れて、毎回書き方を調べるのはキツイです。。。
cronの記述方法と設定
cronは「実行したい日時の設定」と、「実行したいコマンドの設定」を行います。
コマンドラインからcron設定
書式
crontab [オプション]
オプション
-e crontabファイルの編集ができます。
-l crontabファイルの内容が表示されます。
-r crontabファイルを削除します。yes/noといった削除確認がないので注意が必要です。
-u ユーザーを指定します。rootユーザーのみ使用できます。
crontabファイルの編集コマンド
crontab -e
「e」と「r」はキーの配置が隣り合っているので、打ち間違えする可能性があります。
削除確認がないので、入力したコマンドはチェックしましょう。
cron設定書式
分 時 日 月 曜日 <実行コマンド>
日時の設定
日時は「分」「時」「日」「月」「曜日」の5種類の設定を必ずします。
それぞの種類には指定できる範囲があり、指定方法は複数あります。
日時の指定範囲
分 0~59
時 0~23
日 1~31
月 1~12 または jan~dec
曜日 0~7[0,7は日曜日] または sun~sat
範囲指定をしない場合は「*」を指定します。
分に*を指定すれば0~59を指定したことに、時に*を指定すれば0~23を指定したことになります。
日時の指定方法
範囲値を1つ設定する方法です。
分に「5」を指定すれば5分、時に「5」を指定すれば5時に実行されます。
範囲値をカンマで区切って設定する方法です。
分に「5,10」を指定すると5分と10分、時に「1,3」を指定すると1時と3時に実行されます。
範囲値をハイフンで区切って設定する方法です。
分に「5-7」を指定すると5分と6分と7分、時に「1-3」を指定すると1時と2時と3時に実行されます。
*の指定、もしくは範囲の指定値と間隔値をスラッシュで区切って設定する方法です。
分に「*/5」を指定すると5分毎、時に「*/2」を指定すると2時間毎に実行されます。
分に「0-10/5」を指定すると0分5分10分、時に「1-5/2」を指定すると1時3時5時に実行されます。
コマンドの設定
コマンドラインで実行できるコマンドを設定します。
様々なコマンドを設定できますが、この記事では「レンタルサーバー毎に少し違いがあるPHPプログラムを実行する記述」を紹介します。