WindowsServer上でphpのバッチを実行する

こんばんわ。

これは後々使えると思うのでメモです。

今回は 「WindowsServer上でphpのバッチを実行する」 ですが、
前提として WindowsServer + IIS + php が
既に導入されているというのが条件です(当たり前ですが…)

さて、この中で大事になってくるのは、
サーバーでもwebサーバーでもありません。
まぎれもなく、phpのスクリプトになります。

通常、コマンドライン上でphpを起動するには、
IIS上でphpが起動できる(インストールしている)のであれば、
「php5.3.27」みたいなフォルダが、Windowsフォルダ内にあるはずなので、
php-win.exe」を使用して実行する形になります。

指定したファイルを実行する場合には「-f」オプションを付けて
ファイル名を指定して実行します。
こんな感じ。

C:\Windows\php5.3.27\php-win.exe -f D:\hogehoge\test.php

では次にこれをタスクマネージャーに登録します。
「コントロールパネル」 -> 「タスクスケジュール」(ちょっと曖昧ですけど…)をクリック。
すると、cronみたいな設定が行える画面が出てきます。

ここに
「C:\Windows\php5.3.27\php-win.exe」
オプションとして引数
「-f D:\hogehoge\test.php」
を登録します。

時間は各々ご自由に。
後は実行されるまで…

しかし、ここで注意しなければなりません。

シェルスクリプトとしてのphpに関してですが、
この中でincludeをしているとき、
「include ‘./include_file1.php’;」
というような書き方はダメということ。
当たり前ですが、物理パスで書かないとダメです。
なので、シェルスクリプト内のphpのincludeは以下の通りに書き直します。

include 'D:\hogehoge\include_file.php';
//include './include_file.php';

さらに私の場合には、このphpシェルスクリプト内で、
htmlからPDFを作成することを行ってたため、
htmlのcssのパスも上記のincludeと同様に 物理パスにしました。
(↑ここ盲点)

他には、FTPで転送したりだとか本当は色々とやっているのですが、
概略的には、こんな形で実装が可能となります。

Pocket