私は PHP フォークの初心者で、このコード サンプルを PHP.net からコピーしただけです。基本的に、デバイスを監視し、データをデータベースに保存するツールがあります。このツールはバックグラウンドで実行されています。
ここに私のコードがあります:
for(;;)
{
//build connection
$conn = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD);
//select db
mysql_select_db(DB_NAME);
$sql='SELECT * FROM tbl';
$query=mysql_query($sql,$conn);
$zpid=array();
while($res=mysql_fetch_assoc($query))
{
$pid = pcntl_fork();
$execute=0;
if ($pid == -1)
{
echo("could not fork");
}
elseif ($pid)
{
$execute++;
//pcntl_wait($status);
if ($execute>=5)
{
$child=pcntl_wait($status);
if($child)
{
$execute--;
echo 'exited child'.$child;
}
}
}
else
{
$obj=new Monitor($res['ip'],$res['community_string'],$res['id']);
$obj->execute();
//save
$obj->insert_data();
sleep(10);
exit();
}
}
mysql_close($conn);
sleep(60);
}
しかし、ツールを実行すると、ゾンビ プロセスが生成されます。サーバー上でこのゾンビプロセスまたは機能していないプロセスを防ぐにはどうすればよいですか? 私を助けてください。前もって感謝します