Я новичок в разветвлении 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);
}
Но когда инструмент запустится, он создаст зомби-процесс. Что я буду делать, чтобы предотвратить этот зомби или несуществующий процесс на нашем сервере. Пожалуйста помогите. заранее спасибо
mysql_*
функции в новом коде. Они больше не поддерживаются и официально объявлены устаревшими. Видите красное поле? Узнайте о подготовленных операторах и используйте PDO или MySQL — эта статья поможет вам определиться. Если вы выберете PDO, вот хороший учебник. - person NullPoiиteя   schedule 16.05.2013