PHPをcronで自動実行するには?crontabも説明

PHPのプログラムを時間を決めて実行したり、定期的に実行したい場合があるでしょう。そうした場合、UnixやLinuxなどのOS環境ではcronというデーモンプロセスを利用すると簡単に実現できます。

ここでは、PHPのスクリプトやプログラムをcronで実行する方法を説明します。

PHPプログラミングに興味のある方は、プログラミング学習の参考として、ぜひ読んでみてください。

cronとは

cronはUnix/Linux系OSのデーモン

cronはUnix/Linux系OSのデーモンとよばれるもので、プログラムやスクリプトを特定の周期で実行するための便利な手段です。

ユーザーは、実行したいタスク(スクリプトやコマンドの総称)に関する情報をcrontabファイルに登録します。

crontabファイルの各行には、タスクをどんな周期で実行したいかを記述します。

cronで実行したいタスクの登録などの編集を行なうにはcrontabコマンドを使用します。crontabコマンドは指定されたユーザーのcrontabファイルに処理結果を反映します。

crondというデーモン(OSのプロセス)が時刻をチェックしながらcrontabファイルに記載されたタスクを起動を制御します。

cronで実行するタスクの記述

タスクの記述

crontabファイルの各行に、以下の構文で実行するタスクを定義します。なお、以下の構文でわかるように、crontabでは分きざみより細かいタイミングではタスクを起動できません。

分・時・日・月・曜日フィールドの書き方

分から曜日までの各フィールドには以下のように複数の値を設定可能となっています。

設定法 説明 記述例
列挙 コンマ (,) で値のリストを指定 1,2,6
範囲指定 ダッシュ (-) で値の範囲を指定 1-6(1,2,3,4,5,6と同じ)
間隔指定 スラッシュ (/) で間隔を指定 */10(時なら0,10,20と同じ)
全て アスタリスク (*) *(分なら1分毎と同じ)

実行コマンド

スクリプトや実行モジュールを絶対パスで指定します。パラメタにファイルを指定す場合も絶対パスとします。

記述例

毎月1日と15日の23:59にphpスクリプト/var/www/hoge/sample.phpを動かす

毎月1日の10:00から15:00まで1時間おきにphpスクリプト/var/www/hoge/sample.phpを動かす

10分間隔でphpスクリプト/var/www/hoge/sample.phpを動かす

毎週土曜日と日曜日の23:59にphpスクリプト/var/www/hoge/sample.phpを動かす

crontabコマンド

cronのタスクを編集するにはcrontabコマンドを使います。crontabコマンドでは処理内容を以下のオプションで指定します。

オプションの意味は以下のとおりです。

オプション 説明
-e crontabファイルを編集する
-l crontabファイルの設定内容を表示する
-r crontabファイルの設定を削除する
-u cronを設定するユーザーを指定

コマンドライン(CLI)については、以下も参考にしてください。

【初心者向け】PHPのCLIを紹介!CLIのインストールから実行を解説!

PHPをcronで動かす

呼び出された時刻を表示する簡単なPHPスクリプトをサンプルとして、cronでphpを動かす例を紹介します。

以下の内容のファイルsample.phpを作ります。

このスクリプトを1分ごとに起動するには、以下のような行をcrontabファイルに追加します。

crontabのlオプションで記述内容を確認できます。

cronが実行されるとファイルtime.txtにcronの起動時刻が毎分ごとに書き込まれているはずですので、それを以下のphpスクリプトを作ってwebで確認してみます。

実行結果例

PHPをコマンドラインから実行する方法については以下も参考にしてください。

PHPをコマンドラインで実行する方法について詳しく解説!

cronを使う際の留意事項

crontabファイルの記述に誤りがある場合

crontabコマンドで編集をして保存したときに、ファイル内容に誤りがあればエラーメッセージが表示されます。

例)分に誤って60と記入

エラーメッセージは以下のとおりです。

y(es)/n(o)の入力を要求されるので、yを選択すれば編集画面に戻り、nを選択すれば、編集がキャンセルされます。

phpのありかを探すには

phpの絶対パスは、使用しているOSの種類によって異なります。linuxでは実行コマンドのフルパスを調べるwhichコマンドを使って確認します。

Windowsでcronと同じことをするには

WIndowsでcronと同じことをするには、PHPスクリプトを起動するバッチファイルを作成し、それをWindowsのタスクスケジューラーに設定することで可能です。

WIndowsでPHPを動かすための環境設定については以下も参考にしてください。

【初心者向け】XAMPPのインストール方法を解説【開発環境を構築】 【初心者向け】XAMPPのインストール方法を解説!

まとめ

いかがでしたか? 今回は、cronを使ってPHPスクリプトを自動実行する方法を紹介しました。

phpでのデータベースメンテナンスやログメンテナンスなどスケジューリングされたPHPプログラムを動かしたい場面はいろいろ考えられます。cronの扱い方をきちんと理解しておけば、きっと役に立ちます。

この記事が、PHPプログラミングの学習の参考としてお役に立てば幸いです。