summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2020-09-22 15:10:04 +0200
committerSimon Rettberg2020-09-22 15:10:04 +0200
commit0c1bfb91a90430ff95194bf1267226306aae5042 (patch)
treedf4847c26e119ec3bb8b9f1341cbad908c45f12f
parent[Trigger/Event] Fix minor warnings (diff)
downloadslx-admin-0c1bfb91a90430ff95194bf1267226306aae5042.tar.gz
slx-admin-0c1bfb91a90430ff95194bf1267226306aae5042.tar.xz
slx-admin-0c1bfb91a90430ff95194bf1267226306aae5042.zip
[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.
-rw-r--r--inc/taskmanager.inc.php6
1 files 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);
}