[PHP-users 25015] Re: cli をデーモンとして使用する際の注意

satoshi @ try-square.co.jp satoshi @ try-square.co.jp
2005年 3月 22日 (火) 14:46:13 JST


藤本です。

Ryuzo KOSAKI <kosaki @ fip.fujitsu.com>さん:
> デーモンプロセスにPHPを使用してるなんてひとは、いないのかなあ。

言語としての魅力から、そう考える人は少なくないでしょうね。
私は、以下のいずれの方法も使ったことがあります。

1.C言語でデーモンプロセスを書いて、その中からシェル経由でPHPを
  呼び出す
  例:system("/usr/local/bin/php /home/hoge/hoge.php");

2.PHPスクリプトをcron登録する
  例:(crontabエントリ)
    * * * * * /home/hoge/hoge.php > /dev/null 2>&1
  ※ただしhoge.phpの冒頭で#!/usr/local/bin/phpとしてスクリプト化
  ※1分に1回までしか呼べません

3.localhostにHTTPリクエストを投げてPHPを呼び出すperlスクリプトを
  書いて、そのperlスクリプトをデーモン起動する

どれもメモリリークは無く、安定して動いてますよ。
意外とお勧めは3です。無駄に遅いですが、管理しやすい安心動作です。

ただし、いずれの方法も、PHPスクリプトの処理領域は呼び出しごとに
失われてしまうので、必要ならば処理状況を完全にファイルに保存してやる
必要があります。
または、GET変数とプロセス戻り値を駆使すれば、だいたいどんな動きでも
できそうですが。

ちなみに、PHPスクリプト内で無限ループさせるのは、いかにもコワイので、
やったことありません。


----
藤本 悟司

株式会社トライスクエア
〒104-0045 東京都中央区築地3-5-13北村ビル5F
TEL: 03-5148-3345 / FAX: 03-5148-3346
Mobile: 070-6668-4644
E-Mail: satoshi @ try-square.co.jp
WEB: http://www.try-square.co.jp/

Key fingerprint = 95F2 6B3D 0B8C 374A 5E67  CA02 F28F 703A C1A9 8346



PHP-users メーリングリストの案内