From 0c1bfb91a90430ff95194bf1267226306aae5042 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Tue, 22 Sep 2020 15:10:04 +0200 Subject: [inc/Taskmanager] waitComplete(): Better timeout handling Sleep before first query, since we assume that we either just obtained the status object and nothing much has changed since then, or we passed in a deserialized task id from much earlier, where 100ms don't matter that much. --- inc/taskmanager.inc.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inc/taskmanager.inc.php b/inc/taskmanager.inc.php index 85d5ee39..f7c72e04 100644 --- a/inc/taskmanager.inc.php +++ b/inc/taskmanager.inc.php @@ -140,7 +140,8 @@ class Taskmanager return false; $done = false; $deadline = microtime(true) + $timeout / 1000; - do { + while (($remaining = $deadline - microtime(true)) > 0) { + usleep(min(100000, $remaining * 100000)); $status = self::status($task); if (!isset($status['statusCode'])) break; @@ -148,8 +149,7 @@ class Taskmanager $done = true; break; } - usleep(100000); - } while (microtime(true) < $deadline); + } if ($done) { // For now we do this unconditionally, but maybe we want to keep them longer some time? self::release($task); } -- cgit v1.2.3-55-g7522