0
这是一个简化的程序。PHP分叉进程不完全退出并成为僵尸
test.php是一个守护程序,总是在那里运行。 它叉进程来处理一些任务。 完成工作后,分叉进程退出。 但分叉进程退出时,它变成僵尸。
如何使分叉进程完全退出而不会变成僵尸?
#!/usr/bin/php
<?php
while (1) {
sleep(1);
$pid = pcntl_fork();
if (!$pid) {
$mypid = getmypid();
sleep(5);
print "pid=$mypid finish work \n";
exit();
}
sleep(1);
} // while
?>
./test.php
... daemon running ...
$ ps -ef | grep mqp
ubuntu 10084 10073 0 12:21 pts/0 00:00:00 /usr/bin/php ./test.php
ubuntu 10085 10073 0 12:21 pts/0 00:00:00 /usr/bin/php ./test.php
ubuntu 10074 10073 0 12:21 pts/0 00:00:00 [test.php] <defunct>
ubuntu 10075 10073 0 12:21 pts/0 00:00:00 [test.php] <defunct>
僵尸成为这样的时候,父母不收集死儿童肉。 – DRC 2014-12-05 18:00:48