+ if (method_exists(sprintf('Friendica\Worker\%s', $include), 'execute')) {
+ // We constantly update the "executed" date every minute to avoid being killed too soon
+ if (!isset(self::$last_update)) {
+ self::$last_update = strtotime($queue["executed"]);
+ }
+
+ $age = (time() - self::$last_update) / 60;
+ self::$last_update = time();
+
+ if ($age > 1) {
+ $stamp = (float)microtime(true);
+ dba::update('workerqueue', array('executed' => datetime_convert()), array('pid' => $mypid, 'done' => false));
+ self::$db_duration += (microtime(true) - $stamp);
+ }
+
+ array_shift($argv);
+
+ self::execFunction($queue, $include, $argv, true);
+
+ $stamp = (float)microtime(true);
+ if (dba::update('workerqueue', array('done' => true), array('id' => $queue["id"]))) {
+ Config::set('system', 'last_poller_execution', datetime_convert());
+ }
+ self::$db_duration = (microtime(true) - $stamp);
+
+ return true;
+ }
+