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

komura komura @ ma9.seikyou.ne.jp
2005年 3月 23日 (水) 01:57:34 JST


komura です。

On Tue, 22 Mar 2005 15:19:45 +0900
Seiji Masugata <s.masugata @ digicom.dnp.co.jp> wrote:

> > >       nanoweb って PHP で書かれたウェブサーバーが daemon 化していたと
> > >     思います.結構規模のでかいあぷりみたいですが,参考にしてみてはい
> > >     かがでしょうか?
> > >
> > うちでもデーモンで(RSS配信していない)ニュースサイトの要約を
> > 作成したりしていますが、問題なく動いて・・・って、同様の現象が
> > 発生しています(T T)
> 
> 厳密に管理する術があるなら教えてホシィです。

この問題ですが、デーモンにするのであれば、pcntl_fork() を使用すること
で回避できないでしょうか?

例えば、以下のようなコードですが、var_dump( $fp ); で表示される番号は
実行中には変わりません。

また、memory_get_usage() でメモリ使用量を表示させてみましたが、
メモリ使用量も変化しないことを確認しました。

<?php
while ( TRUE ) {
//    echo memory_get_usage() . "\n";
    $pid = pcntl_fork();
    if ( $pid === -1 ) {
        exit;
    }
    else if ( $pid ) {
        // 親プロセス
        pcntl_waitpid( -1, $status, WUNTRACED );
    }
    else {
        // 子プロセス
        $fp = fopen( __FILE__, 'r' );
        var_dump( $fp );
        fclose( $fp );
        exit;
    }
}
?>
--
結果
resource(4) of type (stream)
resource(4) of type (stream)
resource(4) of type (stream)
...


実際にデーモンとして運用したことはありませんので、どこまで使用に
耐えられるかは分かりません。
実用できそうでしたら教えていただけますと幸いです。

-- 
komura <komura @ ma9.seikyou.ne.jp>


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