2007年7月15日日曜日

PHPアプリをWindowsサービスとして動かす

 Windowsでの話。
 PHPで書いたプログラムを常駐プログラムとして動かしたい場合がある。Windowsのタスクに登録して1分毎に実行するという手もあるが、もっと短い間隔で実行したい場合もあるし、タスクが実行されるごとにコマンドラインの黒窓が表示されるのが鬱陶しい。そこで、Windowsのサービスに登録して動かすことにした。

  • Windowsサービスへの登録にはフリーウェア sexeが便利(作者さんありがとう!)。実行ファイルとしてphp.exe、パラメータとして実行するPHPファイルを指定する。
  • PHPアプリ内では永久ループ内でやりたい処理を実行しておく。ただし過負荷にならないように、ループの最後で sleep(1) などしておく。
  • 複数のPHPアプリをサービスとして動かす場合、PHPアプリごとにsexeを用意する。(コピーでOK)
 エラーとか起きるとちょっと怖いけど。実行前のパースでエラーが起きた場合はサービスが停止する。実行中のエラーはエラーログが延々と増えていく...。catchできるエラーはcatchしてしかるべき処置をしておく。catchできないのは...どうするべきなんだろ?

(2007/07/17追記)
 この方法でPHPを実行すると、1回読み込まれたPHPファイルはサービスを再起動するまで再度読み込まれることは無い。コードを変更してもサービスを再起動するまで反映されないので注意。(少しはまった...)

0 件のコメント:

ブログ アーカイブ

tags