use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Util\Lock;
require_once 'include/config.php';
require_once 'include/network.php';
return;
}
+ // If there is a lock then we don't have to check for too much worker
+ if (!Lock::set('poller_worker', 0)) {
+ return;
+ }
+
// If there are already enough workers running, don't fork another one
- if (poller_too_much_workers()) {
+ $quit = poller_too_much_workers();
+ Lock::remove('poller_worker');
+
+ if ($quit) {
return;
}
// We now start the process. This is done after the load check since this could increase the load.
$a->start_process();
- // At first we check the number of workers and quit if there are too much of them
- // This is done at the top to avoid that too much code is executed without a need to do so,
- // since the poller mostly quits here.
- if (poller_too_much_workers()) {
+ // Kill stale processes every 5 minutes
+ $last_cleanup = Config::get('system', 'poller_last_cleaned', 0);
+ if (time() > ($last_cleanup + 300)) {
+ logger('CLEAN: '.time().' > '.($last_cleanup + 300).' - '.$last_cleanup);
+ Config::set('system', 'poller_last_cleaned', time());
poller_kill_stale_workers();
- logger('Pre check: Active worker limit reached, quitting.', LOGGER_DEBUG);
- return;
}
// Do we have too few memory?
foreach ($r as $rr) {
logger("Publish feed to ".$rr["callback_url"], LOGGER_DEBUG);
proc_run(array('priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true),
- 'include/pubsubpublish.php', $rr["id"]);
+ 'include/pubsubpublish.php', (int)$rr["id"]);
}
}