Thread::$current->pid = posix_getpid();
pcntl_signal(SIGTERM, function() { Thread::$current->termHandler(); });
- pcntl_signal(SIGCHLD, function() { Thread::$current->chldHandler(); });
+ pcntl_signal(SIGCHLD, function($signum, $siginfo) { Thread::$current->chldHandler($siginfo); });
}
/**
/**
* @return void
*/
- protected function chldHandler()
+ protected function chldHandler($siginfo)
{
+ if (phpversion() == '8.2.9'){
+ if (is_array($siginfo) && isset($siginfo['pid']) && is_int($siginfo['pid'])) {
+ $childpid = $siginfo['pid'];
+
+ if (isset($this->children[$childpid])) {
+ $child = $this->children[$childpid];
+ $child->isRunning();
+
+ unset($this->children[$childpid]);
+ }
+ }
+ }
+
while (($childpid = pcntl_waitpid(-1, $status, WNOHANG)) > 0) {
if (isset($this->children[$childpid])) {
$child = $this->children[$childpid];