From da799464afca1eb5fbdbe18dd9948e3fcc1c5e8a Mon Sep 17 00:00:00 2001 From: Nicolas Grekas Date: Tue, 19 Oct 2021 10:36:09 +0200 Subject: [PATCH] [Messenger] subtract handling time from sleep time in worker --- src/Symfony/Component/Messenger/Worker.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Symfony/Component/Messenger/Worker.php b/src/Symfony/Component/Messenger/Worker.php index b7002c5984851..183a48852dda2 100644 --- a/src/Symfony/Component/Messenger/Worker.php +++ b/src/Symfony/Component/Messenger/Worker.php @@ -87,6 +87,7 @@ public function run(array $options = []): void while (false === $this->shouldStop) { $envelopeHandled = false; + $envelopeHandledStart = microtime(true); foreach ($this->receivers as $transportName => $receiver) { if ($queueNames) { $envelopes = $receiver->getFromQueues($queueNames); @@ -113,10 +114,12 @@ public function run(array $options = []): void } } - if (false === $envelopeHandled) { + if (!$envelopeHandled) { $this->dispatchEvent(new WorkerRunningEvent($this, true)); - usleep($options['sleep']); + if (0 < $sleep = (int) ($options['sleep'] - 1e6 * (microtime(true) - $envelopeHandledStart))) { + usleep($sleep); + } } }