function spawn($exec, $args = array()) {
$pid = pcntl_fork();
if ($pid < 0)
return false;
else if ($pid == 0) {
$ppid = getmypid();
$pid = pcntl_fork();
if ($pid < 0)
file_put_contents('/tmp/error.log', "fork failed: ${cmd} ". implode(' ', $args). "\n");
else if ($pid == 0) {
pcntl_waitpid($ppid, $status);
pcntl_exec($exec, $args);
}
else
exit(0);
}
}
這在CLI模式下運行良好。 但是對於php-fpm,它會導致調用者死循環,然後超時。 爲什麼會發生這種情況?兩次調用pcntl_fork導致PHP CGI死循環
好的。這似乎幾乎是完全的原因,除了我認爲pcntl_waitpid應該阻止而不是死循環。 – tewilove 2012-07-18 12:40:19