Ben bir ebeveyn / işçi düzenlemesi devam var. Ebeveyn sürekli onlar aşağıdaki döngü ile hala hayatta olduğunu kontrol, bir dizi işçi PID'leri tutar:
// $workers is an array of PIDs
foreach ($workers as $workerID => $pid) {
// Check if this worker still exists as a process
pcntl_waitpid($pid, $status, WNOHANG|WUNTRACED);
// If the worker exited normally, stop tracking it
if (pcntl_wifexited($status)) {
$logger->info("Worker $workerID exited normally");
array_splice($workers, $workerID, 1);
}
// If it has a session ID, then it's still living
if (posix_getsid($pid))⋅
$living[] = $pid;
}
// $dead is the difference between workers we've started
// and those that are still running
$dead = array_diff($workers, $living);
Sorun pcntl_waitpid()
Her zaman 0 $status
belirliyor, böylece bu döngü çalıştırmak çok ilk kez anne-baba olsa bile, tüm çocukların normal çıktıktan olduğunu düşünüyor olması hala çalışıyor. I pcntl_waitpid()
yanlış kullanarak, ya da öyle değil bir şey yapmak için bekliyorum?