use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Util\Lock;
require_once 'include/config.php';
require_once 'include/network.php';
$priority = PRIORITY_MEDIUM;
$dont_fork = get_config("system", "worker_dont_fork");
+ $created = datetime_convert();
if (is_int($run_parameter)) {
$priority = $run_parameter;
if (isset($run_parameter['priority'])) {
$priority = $run_parameter['priority'];
}
+ if (isset($run_parameter['created'])) {
+ $created = $run_parameter['created'];
+ }
if (isset($run_parameter['dont_fork'])) {
$dont_fork = $run_parameter['dont_fork'];
}
$found = dba::select('workerqueue', array('id'), array('parameter' => $parameters), array('limit' => 1));
if (!dbm::is_result($found)) {
- dba::insert('workerqueue', array('parameter' => $parameters, 'created' => datetime_convert(), 'priority' => $priority));
+ dba::insert('workerqueue', array('parameter' => $parameters, 'created' => $created, 'priority' => $priority));
}
// Should we quit and wait for the poller to be called as a cronjob?
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;
}