サーバー上の機能の1つに、PHPファイル等のプログラムを自動的に実行させる『Cron(クーロン)』と呼ばれるものがあります。
Cronとは?
Cron(クーロン or クローン)とは、指定時間に指定コマンド(プログラム)を自動的に実行させるサーバーの機能です。定期的なメールの送信や、ブログのRSS取得などにもよく使用されています。
"エックスサーバー" や "さくらサーバー" など、たいていの大手サーバー運営会社であれば、ユーザーに対してCronのサービスを提供しています。
▼エックスサーバー画面
▼さくらサーバー画面
Cronでは、コマンドを適切に設定することで、任意のサーバー上のプログラムを 好きな日時・頻度で自動実行させることが出来ます。
コマンド設定方法は共通しています。
今回は、Cronの日時・頻度指定のやり方を分かりやすく紹介していきます!
5つの数値を指定
Cronでは、以下の5つの数値をCRONTABに指定して、任意のタイミングでプログラムを実行させることが出来ます。
実行コマンドについて
※実行コマンドの書き方はサーバーによって異なります。「(サーバー名)Cron 実行コマンド」のようなキーワードでGoogle検索してみてください。なお、エックスサーバーにおける記述方法は以下の記事で紹介しています。
-
エックスサーバーでCronによるphp動作が上手くいかない場合に確認すべき6つの事項
エックスサーバー(Xserver)には、サーバー上のPHPファイル等のプログラムを、Cron を利用して自動的に実行させる機能が提供されています。 Cronとは? Cron(クーロン or クローン) ...
続きを見る
数値の記述方法
次に、数値の書き方について紹介していきます。
各項目に対して記入できる数値は、以下の通りです
項目 | 記入する数値 |
分 | 毎分実行する場合:* 指定あり:0 ~ 59 |
時 | 毎時間実行する場合:* 指定あり:0 ~ 23 |
日 | 毎日実行する場合:* 指定あり:1 ~ 31 |
月 | 毎月実行する場合:* 指定あり:1 ~ 12 |
曜日 | 毎曜日実行する場合:* 日曜日:0 月曜日:1 火曜日:2 水曜日:3 木曜日:4 金曜日:5 土曜日:6 |
上表の通り、特に指定が必要のない項目(実行タイミングを限定したくない項目)に対しては、ワイルドカード(*)"アスタリスク" を入力します。空欄にしておくとエラーが生じるので注意してください。
また、基本的にCronは1分おきの実行が可能です。そのため、"分” の項目に対してワイルドカード(*)を入力すると、毎分(1分おきに)プログラムが実行されてしまう ので注意してください。
これらの数値を用いて、好きな日時・頻度でプログラムでプログラムを実行させていきましょう。
次に、目的別の記入方法について紹介していきます。
好きなタイミングでプログラムを実行
好きなタイミング(日時・曜日)でプログラムを実行したい場合、以下のように記入します。
【記入例①】8月13日の午前8時30分 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 30 |
時 | 8 |
日 | 13 |
月 | 8 |
曜日 | * |
好きなタイミングで実行させたい場合、記入例①のように各項目に対して数値を入力していくだけで良いです。指定が必要のない項目(曜日)に対してはワイルドカード(*)を記入しています。
好きな頻度でプログラムを実行
好きな頻度でプログラムを実行したい場合、以下のように記入します。
【記入例②】毎日、午後13時20分 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 20 |
時 | 13 |
日 | * |
月 | * |
曜日 | * |
記入例②のように、日・月・曜日に対してワイルドカード(*)を記入すると、日時によらず毎日同じ時間にプログラムが実行されるようになります。
【記入例③】毎時間の0分 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | * |
日 | * |
月 | * |
曜日 | * |
記入例③のように、"分" に対してのみ数値を記入することで、毎日1時間おきにプログラムが実行されるようになります。
【記入例④】毎週水曜日の午後20時ジャスト にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | 20 |
日 | * |
月 | * |
曜日 | 3 |
曜日を指定したい場合は、上表で紹介したように、各曜日に対応する数値を入力します。
【記入例⑤】毎月20日の午前0時 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | 0 |
日 | 20 |
月 | * |
曜日 | * |
〇〇分おき、〇〇時間おきにプログラムを実行
〇〇分おき、○○時間おき、〇〇日おきなど、一定の間隔を空けてプログラミングを実行したい場合には、*/10 のような記述方法をとります。
【記入例⑥】毎日2時間おき にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | */1 |
日 | * |
月 | * |
曜日 | * |
記入例⑥では、毎日の0時を起点として、1時間おきにプログラムが実行されます。
(実行タイミング:0時, 2時, 4時, 6時, 8時, 10時, 12時, 14時, 16時, 18時, 20時, 22時)
もし 特定の時間から時間まで一定の間隔を空けて実行したい場合 は、記入例⑦のように記入します。
【記入例⑦】毎日7時から22時まで、1時間おき にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | 7-22/1 |
日 | * |
月 | * |
曜日 | * |
記入例⑦のように、"7時から22時まで" を「7-22」で表し、"1時間おき" を「/1」で表します。
独立した複数タイミングでプログラムを実行
「毎日13時と15時だけ」「毎月15日と22日だけ」など、独立した複数のタイミングでプログラムを実行したい場合は、記入例⑧のように記入します。
【記入例⑧】毎日5時・12時・17時 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 0 |
時 | 5,12,17 |
日 | * |
月 | * |
曜日 | * |
記入例⑧のように、数値を カンマ(コンマ)"," で区切ることで、特定の独立したタイミングにおいて実行させることが出来ます。
【記入例⑨】毎月5日・18日の午後13時30分 にプログラムを実行したい場合
項目 | 記入する数値 |
分 | 30 |
時 | 13 |
日 | 5,18 |
月 | * |
曜日 | * |
好きなタイミング・頻度でプログラムを自動実行!
以上が、Cron(CRONTAB)において、日時・曜日・頻度でプログラムを実行させるための基本的な記入方法です。
ここで紹介した設定を活用することで、自身の好きなタイミングでCron実行を行うことが出来ると思います。
ぜひ参考にしてみてくださいね!
▼こちらの記事もオススメ!
-
エックスサーバーでCronによるphp動作が上手くいかない場合に確認すべき6つの事項
エックスサーバー(Xserver)には、サーバー上のPHPファイル等のプログラムを、Cron を利用して自動的に実行させる機能が提供されています。 Cronとは? Cron(クーロン or クローン) ...
続きを見る