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

Ryuzo KOSAKI kosaki @ fip.fujitsu.com
2005年 3月 22日 (火) 01:45:45 JST


こんにちは、こさきです。

PHP 5.0.3 (cli)をSunOS 5.8 sun4u sparcで使用しています。
こいつをsocket通信のサーバとしてdaemonで動作させようと
思うのですが、注意点がありましたら教えてください。

※たま〜にくるメッセージを受信してファイルに格納する
 こんな感じのプログラムを想定しています。
pcntl_fork();
posix_setsid();
$soc = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
ループはじまり
$soc2 = stream_socket_accept($soc);
$data = fread($soc2,1000);
fclose($soc2);
$fp = fopen("新規一般ファイル名", "w");
fwrite($fp, $data, 長さ);
fclose($fp);
ループおわり

プログラミングについては置いといて、資源の消費が心配です。

<?php
for($i=0;$i<5;++$i) {
  $poi=fopen("/etc/hosts", "r");
  var_dump($poi);
  fclose($poi);
}
?>

例えば上記のようなスクリプトをうごかすと、
|resource(4) of type (stream)
|resource(5) of type (stream)
|resource(6) of type (stream)
|resource(7) of type (stream)
|resource(8) of type (stream)
こんな結果がでます。ループが増えると、なにか困ったこと
が起きるような予感が。PHPにしなければいいと言われればそ
のとおりなのですが、PHPでこんなことがちゃんと動くといい
な、と思ってます。



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