update_daemon2: check for dead children before spawning
This commit is contained in:
parent
e933840523
commit
5a613536c7
1 changed files with 13 additions and 6 deletions
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue