X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fpoller.php;h=dfc3b90cf08c4249df88095cfc65b67663e2ca4f;hb=497fd34026fbaa83b11a64d3a0a6e20f1360e5d6;hp=b54757b00bf1bb9f9b5aa7ffc9eb9fee3b4dd7e2;hpb=668da905e2b3a096ed5b5059cbaec587fa113d23;p=friendica.git diff --git a/include/poller.php b/include/poller.php index b54757b00b..dfc3b90cf0 100644 --- a/include/poller.php +++ b/include/poller.php @@ -46,10 +46,10 @@ function poller_run(&$argv, &$argc){ if(($argc <= 1) OR ($argv[1] != "no_cron")) { // Run the cron job that calls all other jobs - proc_run("php","include/cron.php"); + proc_run(PRIORITY_MEDIUM, "include/cron.php"); // Run the cronhooks job separately from cron for being able to use a different timing - proc_run("php","include/cronhooks.php"); + proc_run(PRIORITY_MEDIUM, "include/cronhooks.php"); // Cleaning dead processes poller_kill_stale_workers(); @@ -273,6 +273,21 @@ function poller_too_much_workers() { $s = q("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00'"); $entries = $s[0]["total"]; + if (Config::get("system", "worker_fastlane", false) AND ($queues > 0) AND ($entries > 0) AND ($active >= $queues)) { + $s = q("SELECT `priority` FROM `workerqueue` WHERE `executed` = '0000-00-00 00:00:00' ORDER BY `priority` LIMIT 1"); + $top_priority = $s[0]["priority"]; + + $s = q("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE `priority` <= %d AND `executed` != '0000-00-00 00:00:00'", + intval($top_priority)); + $high_running = $s[0]["total"]; + + /// @todo define maximum number of fastlanes + if (($high_running == 0) AND ($top_priority >= PRIORITY_HIGH) AND ($top_priority < PRIORITY_LOW)) { + logger("There are jobs with priority ".$top_priority." waiting but none is executed. Open a fastlane.", LOGGER_DEBUG); + $queues = $active + 1; + } + } + logger("Current load: ".$load." - maximum: ".$maxsysload." - current queues: ".$active."/".$entries." - maximum: ".$queues."/".$maxqueues, LOGGER_DEBUG); // Are there fewer workers running as possible? Then fork a new one.