From 6f0db006ce2b792de8804b57aacc0d50179c4c40 Mon Sep 17 00:00:00 2001 From: dnomd343 Date: Thu, 11 Aug 2022 19:25:00 +0800 Subject: [PATCH] fix: avoid `pcntl_wait` blocking --- main.php | 5 ++++- src/Daemon.php | 4 ---- src/Logger.php | 2 +- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/main.php b/main.php index 4edf872..fe2230d 100644 --- a/main.php +++ b/main.php @@ -25,8 +25,11 @@ $vlmcsd = array( ); logging::info('Loading kms-server (' . $version . ')'); + declare(ticks = 1); -pcntl_signal(SIGCHLD, 'subExit'); // receive SIGCHLD signal +pcntl_signal(SIGCHLD, function() { // receive SIGCHLD signal + pcntl_wait($status, WNOHANG); // avoid zombie process +}); new Process($nginx['command']); logging::info('Start nginx server...OK'); diff --git a/src/Daemon.php b/src/Daemon.php index 3a19af5..c8f61aa 100644 --- a/src/Daemon.php +++ b/src/Daemon.php @@ -3,10 +3,6 @@ require_once 'Logger.php'; require_once 'Process.php'; -function subExit(): void { - pcntl_wait($status); // avoid zombie process -} - function msSleep(int $ms): void { // sleep for xxx ms for ($i = 0; $i < $ms; $i++) { usleep(1000); // split multiple times (avoid SIGCHLD signal) diff --git a/src/Logger.php b/src/Logger.php index 14f3cb6..1129ca4 100644 --- a/src/Logger.php +++ b/src/Logger.php @@ -1,6 +1,6 @@ '37m', // white