From 1f63a1821c8cbd96749051c4c0c89887fba95bab Mon Sep 17 00:00:00 2001 From: rockstar04 Date: Wed, 14 May 2014 09:08:17 -0500 Subject: [PATCH 1/2] Move wait to a look Putting the thread to sleep with wait no longer allows signals to be captured. This allow signals like USR1 to be used again Correct Parse error in Worker Finally currect parse error --- lib/Resque/Worker.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/Resque/Worker.php b/lib/Resque/Worker.php index d94aef54..d007d266 100644 --- a/lib/Resque/Worker.php +++ b/lib/Resque/Worker.php @@ -213,7 +213,9 @@ 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(); + } $exitStatus = pcntl_wexitstatus($status); if($exitStatus !== 0) { $job->fail(new Resque_Job_DirtyExitException( From cf0ef2b3bbe120a19761daaa906ee8f272e108b9 Mon Sep 17 00:00:00 2001 From: rockstar04 Date: Wed, 14 May 2014 12:08:28 -0500 Subject: [PATCH 2/2] Add usleep to improve performance --- lib/Resque/Worker.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/Resque/Worker.php b/lib/Resque/Worker.php index d007d266..9d6d4a86 100644 --- a/lib/Resque/Worker.php +++ b/lib/Resque/Worker.php @@ -215,6 +215,9 @@ public function work($interval = Resque::DEFAULT_INTERVAL, $blocking = false) // Wait until the child process finishes before continuing 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) {