diff --git a/lib/Resque/Worker.php b/lib/Resque/Worker.php index d94aef54..9d6d4a86 100644 --- a/lib/Resque/Worker.php +++ b/lib/Resque/Worker.php @@ -213,7 +213,12 @@ public function work($interval = Resque::DEFAULT_INTERVAL, $blocking = false) $this->logger->log(Psr\Log\LogLevel::INFO, $status); // Wait until the child process finishes before continuing - pcntl_wait($status); + while(pcntl_wait($status, WNOHANG) === 0) { + pcntl_signal_dispatch(); + + // Pause for a half a second to conserve system resources + usleep(500000); + } $exitStatus = pcntl_wexitstatus($status); if($exitStatus !== 0) { $job->fail(new Resque_Job_DirtyExitException(