diff --git a/include/pidfile.php b/include/pidfile.php index 4f5b25ad75..3093e149ae 100644 --- a/include/pidfile.php +++ b/include/pidfile.php @@ -7,8 +7,8 @@ class pidfile { $this->_file = "$dir/$name.pid"; if (file_exists($this->_file)) { - $pid = trim(file_get_contents($this->_file)); - if (posix_kill($pid, 0)) { + $pid = trim(@file_get_contents($this->_file)); + if (($pid != "") AND posix_kill($pid, 0)) { $this->_running = true; } } @@ -21,7 +21,7 @@ class pidfile { public function __destruct() { if ((! $this->_running) && file_exists($this->_file)) { - unlink($this->_file); + @unlink($this->_file); } } @@ -30,7 +30,7 @@ class pidfile { } public function running_time() { - return(time() - filectime($this->_file)); + return(time() - @filectime($this->_file)); } public function kill() { diff --git a/include/poller.php b/include/poller.php index c919b9d2ab..7255eaa6e0 100644 --- a/include/poller.php +++ b/include/poller.php @@ -66,6 +66,8 @@ function poller_run(&$argv, &$argc){ if ($workers[0]["workers"] >= $queues) return; + $starttime = time(); + while ($r = q("SELECT * FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `created` LIMIT 1")) { if(function_exists('sys_getloadavg')) { @@ -76,6 +78,10 @@ function poller_run(&$argv, &$argc){ } } + // Quit the poller once every hour + if (time() > ($starttime + 3600)) + return; + q("UPDATE `workerqueue` SET `executed` = '%s', `pid` = %d WHERE `id` = %d", dbesc(datetime_convert()), intval(getmypid()),