diff --git a/include/poller.php b/include/poller.php index 4cb6eb8d58..942fb6eafb 100644 --- a/include/poller.php +++ b/include/poller.php @@ -76,11 +76,18 @@ function poller_run(&$argv, &$argc){ if (poller_too_much_workers()) return; - q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d", + q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d AND `executed` = '0000-00-00 00:00:00'", dbesc(datetime_convert()), intval(getmypid()), intval($r[0]["id"])); + // Assure that there are no tasks executed twice + $id = q("SELECT `id` FROM `workerqueue` WHERE `id` = %d AND `pid` = %d", + intval($r[0]["id"]), + intval(getmypid())); + if (!$id) + continue; + $argv = json_decode($r[0]["parameter"]); $argc = count($argv);