]> git.mxchange.org Git - friendica.git/commitdiff
Only check for stale processes every 5 minutes
authorMichael <heluecht@pirati.ca>
Mon, 12 Jun 2017 09:44:46 +0000 (09:44 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 12 Jun 2017 09:44:46 +0000 (09:44 +0000)
boot.php
include/poller.php
include/pubsubpublish.php

index fe1ee63e06b37504138be60067e4b532f4b6d560..b93810d774309a10c83cf3d639197b4645363565 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -22,6 +22,7 @@ require_once(__DIR__ . DIRECTORY_SEPARATOR . 'vendor' . DIRECTORY_SEPARATOR . 'a
 
 use Friendica\App;
 use Friendica\Core\Config;
+use Friendica\Util\Lock;
 
 require_once 'include/config.php';
 require_once 'include/network.php';
@@ -1100,8 +1101,16 @@ function proc_run($cmd) {
                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;
        }
 
index 89b0a24dbcf0cf9f804b68503d5cc5b188396e46..04dcfa431adac2d8204ea5f8e8519b82a25abd58 100644 (file)
@@ -47,13 +47,12 @@ function poller_run($argv, $argc){
        // 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?
index 3265fd1e16097d87ff5cfea529e70202cae16dd8..580e3ffce18038f8b86f521f28acdf2d54a80aaf 100644 (file)
@@ -19,7 +19,7 @@ function pubsubpublish_run(&$argv, &$argc){
                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"]);
                }
        }