X-Git-Url: https://git.wh0rd.org/?p=tt-rss.git;a=blobdiff_plain;f=update_daemon2.php;h=326b69e49dce1905d22f9c98c7567bb994fd4e9a;hp=7e06cf9a9b64bc775fc182a34a3b3cab84bb781a;hb=5a613536c7859f108da8d1e58de2ca0189a80efb;hpb=e93384052309f1119c205b6f21ae21f06fc03e88 diff --git a/update_daemon2.php b/update_daemon2.php index 7e06cf9a..326b69e4 100644 --- a/update_daemon2.php +++ b/update_daemon2.php @@ -42,11 +42,7 @@ $last_checkpoint = -1; - function sigalrm_handler() { - die("received SIGALRM, hang in feed update?\n"); - } - - function sigchld_handler($signal) { + function reap_children() { global $children; $tmp = array(); @@ -61,9 +57,18 @@ $children = $tmp; - $running_jobs = count($children); + return count($tmp); + } + + function sigalrm_handler() { + die("received SIGALRM, hang in feed update?\n"); + } + + function sigchld_handler($signal) { + $running_jobs = reap_children(); _debug("[SIGCHLD] jobs left: $running_jobs"); + pcntl_waitpid(-1, $status, WNOHANG); } @@ -123,6 +128,8 @@ if ($last_checkpoint + SPAWN_INTERVAL < time()) { + reap_children(); + for ($j = count($children); $j < MAX_JOBS; $j++) { $pid = pcntl_fork(); if ($pid == -1) {