Reduction of double executions - hopefully

This commit is contained in:
Michael Vogel 2015-09-29 06:15:26 +02:00
parent ed8cdc7d85
commit c3ee255b0c

View file

@ -68,14 +68,6 @@ function poller_run(&$argv, &$argc){
while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `created` LIMIT 1")) { while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `created` LIMIT 1")) {
// Quit the poller once every hour
if (time() > ($starttime + 3600))
return;
// Count active workers and compare them with a maximum value that depends on the load
if (poller_too_much_workers())
return;
q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d AND `executed` = '0000-00-00 00:00:00'", q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d AND `executed` = '0000-00-00 00:00:00'",
dbesc(datetime_convert()), dbesc(datetime_convert()),
intval(getmypid()), intval(getmypid()),
@ -86,7 +78,7 @@ function poller_run(&$argv, &$argc){
intval($r[0]["id"]), intval($r[0]["id"]),
intval(getmypid())); intval(getmypid()));
if (!$id) { if (!$id) {
logger("Queue item ".$r[0]["id"]." was executed multiple times - quitting this one", LOGGER_DEBUG); logger("Queue item ".$r[0]["id"]." was executed multiple times - skip this execution", LOGGER_DEBUG);
continue; continue;
} }
@ -116,6 +108,14 @@ function poller_run(&$argv, &$argc){
q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($r[0]["id"])); q("DELETE FROM `workerqueue` WHERE `id` = %d", intval($r[0]["id"]));
} else } else
logger("Function ".$funcname." does not exist"); logger("Function ".$funcname." does not exist");
// Quit the poller once every hour
if (time() > ($starttime + 3600))
return;
// Count active workers and compare them with a maximum value that depends on the load
if (poller_too_much_workers())
return;
} }
} }