From 5390cab7d18d6a985bef6bbfed640c7b4fe73c91 Mon Sep 17 00:00:00 2001 From: Sebastian Brix Date: Fri, 25 Aug 2023 10:50:22 +0200 Subject: [PATCH] Umgehe Fehler in PHP 8.2.9 (https://github.com/php/php-src/pull/11863) --- src/Thread.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Thread.php b/src/Thread.php index deb20ad..8db0855 100644 --- a/src/Thread.php +++ b/src/Thread.php @@ -44,7 +44,7 @@ abstract class Thread 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); }); } /** @@ -58,8 +58,21 @@ abstract class Thread /** * @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]; -- 2.34.1