Windows VistaでPHPのcronを実行する
WindowsでPHPスクリプトを実行するには2つの方法があります。1つは、cronを手動で実行する方法です。もう1つは、Windowsタスクスケジューラサービスを使って、特定の周期と頻度でcronが実行されるようにスケジュールする方法です。
ここでも、前に示した「mycron.php」というPHPスクリプトを例に使って説明します。
一般に、cronを手動で実行するのは効果的な解決策ではありません。人間が物理的にコマンドを入力する必要があるからです。バッチファイルを作成すると、この処理を簡略化できます。まず、.bat拡張子付きのテキストファイル(この例では「cron.bat」)を作成し、次の構文を使ってファイルに2行を追加します。
SET PATH="{php.exe HOME}"; start php.exe phpscriptname.php
例えば、「mycron.php」スクリプトを実行する場合は、次のように記述します。
SET PATH="D:\PHP" start php.exe mycron.php
1行目は、現在のディレクトリをPHPアプリケーションサーバー実行可能ファイルの場所に設定します。2行目は、PHPスクリプトを新しいウィンドウで開始します。
PHPスクリプト「mycron.php」をバッチファイルと同じディレクトリに配置します(または、「mycron.php」の場所を参照するようにバッチファイルのパスを変更します)。
Windowsでcrontabが実行されるたびに、MS-DOSウィンドウが開いてスクリプトが実行され、スクリプトが完了するとウィンドウが閉じます。出力は「logs」サブディレクトリに作成されます。
もう1つのオプションは、Windowsタスクスケジューラサービスを使う方法です。少なくともWindows 95以降のすべてのバージョンのWindowsでは、タスクスケジューラを使ってジョブをスケジュールし、指定した時間に実行できます。ただし、Windows Vistaでは以前のバージョンのWindowsよりも柔軟かつ安全にタスクを実行できるようになっています。Windows Vistaのタスクスケジューラの最も重要な新機能は次のとおりです。
- 複数の条件を指定して、コンピュータが特定の状態になっている場合にのみタスクを実行するように制限できます。例えば、コンピュータがアイドル状態になっているとき、バッテリ電源ではなくAC電源を使用しているとき、ネットワーク接続が使用可能なとき、またはコンピュータがスリープ状態ではなくオンになっているときだけ、タスクを実行するようにスケジュールすることができます。
- Windows Vistaのタスクスケジューラでは、コンピュータのアイドル時、起動時、またはログオン時にタスクを開始するトリガがサポートされています。
- 管理者は、タスクが正しく実行されなかった場合のタスクスケジューラの動作を設定できます。タスクが失敗した場合に、管理者はタスクを再試行する回数を指定できます。また、タスクを実行する最大限の時間を設定し、実行時間がかかりすぎている場合にタスクを停止することもできます。
Windows Vistaの新しいタスクスケジューラの機能の詳細、およびWindows VistaとWindows XPやWindows Server 2003のタスクスケジューラの比較については、Mycrosoft TechNetにある「Windows Vistaのタスクスケジューラ」のページを参照ください。
Windows Vistaでタスクスケジューラを使ってPHPスクリプトを実行するには、次の手順を実行します。
- [スタート]→[すべてのプログラム]→[アクセサリ]→[システムツール]→[タスクスケジューラ]を選択し、タスクスケジューラを起動します。
- [タスクスケジューラ]ウィンドウで、[操作]→[タスクの作成]を選択します。
- [タスクの作成]ウィンドウの[全般]タブで、タスクの名前を入力し、必要に応じて説明を入力します(図5を参照)。
- [タスクの作成]ウィンドウの[操作]タブで、[新規]ボタンをクリックします(図6の上を参照)。次に、操作を選択します(図6の下を参照)。PHPスクリプトを実行する場合は、[プログラムの開始]オプションを選択します。
- [条件]タブで、タスクを実行するための条件を指定します。設定した条件が真にならない限り、タスクは実行されません(図7を参照)。
- [設定]タブ(図8を参照)では、タスクの動作に影響する追加設定を指定します。タスクが失敗した場合や、最大許容時間を超えて実行されている場合の処理方法などを指定できます。設定が終わったら、[OK]をクリックします。
- 最後に、メインの[タスクスケジューラ]ウィンドウで、操作(ここではruncron)を選択し、[実行]ボタンをクリックしてPHPスクリプトを実行します(図9を参照)。
何も問題がなければ、「logs」ディレクトリにタスクの実行結果が作成されます。これでWindows Vistaでのcronの作成は終わりです。次に説明するように、Windows XPではこの作業をはるかに簡単に行うことができます。