]> git.mxchange.org Git - friendica.git/commitdiff
It's faster without locks, gnarl ...
authorMichael <heluecht@pirati.ca>
Mon, 12 Jun 2017 19:20:50 +0000 (19:20 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 12 Jun 2017 19:20:50 +0000 (19:20 +0000)
include/poller.php
src/Util/Lock.php

index 53f85578531c2c6c5efa302c6ac74a9ec59eb617..42bf589137964691a143e483d1f4c70e7db99aca 100644 (file)
@@ -88,6 +88,7 @@ function poller_run($argv, $argc){
                // If we got that queue entry we claim it for us
                if (!poller_claim_process($r[0])) {
                        Lock::remove('poller_fetch_worker');
+                       usleep(rand(0, 200000));
                        continue;
                } else {
                        // Fetch all workerqueue data while the table is still locked
@@ -95,7 +96,6 @@ function poller_run($argv, $argc){
                        $entries = poller_total_entries();
                        $top_priority = poller_highest_priority();
                        $high_running = poller_process_with_priority_active($top_priority);
-                       Lock::remove('poller_fetch_worker');
                }
 
                // To avoid the quitting of multiple pollers only one poller at a time will execute the check
@@ -616,10 +616,6 @@ function poller_worker_process() {
        // Check if we should pass some low priority process
        $highest_priority = 0;
 
-       if (!Lock::set('poller_fetch_worker')) {
-               return false;
-       }
-
        if (poller_passing_slow($highest_priority)) {
                // Are there waiting processes with a higher priority than the currently highest?
                $r = q("SELECT * FROM `workerqueue`
@@ -647,11 +643,6 @@ function poller_worker_process() {
                $r = q("SELECT * FROM `workerqueue` WHERE `executed` <= '%s' ORDER BY `priority`, `created` LIMIT 1", dbesc(NULL_DATE));
        }
 
-       // We only unlock the tables here, when we got no data
-       if (!dbm::is_result($r)) {
-               Lock::remove('poller_fetch_worker');
-       }
-
        return $r;
 }
 
index 6d7952ffa914524b0a40f738af91a3ceccf2a3df..36f408cf324b4e1603c82e9c6d963579e0ab85cc 100644 (file)
@@ -57,7 +57,6 @@ class Lock {
 
                $memcache = self::connectMemcache();
                if (is_object($memcache)) {
-                       $wait_sec = 0.2;
                        $cachekey = get_app()->get_hostname().";lock:".$fn_name;
 
                        do {
@@ -82,15 +81,13 @@ class Lock {
                                dba::unlock();
 
                                if (!$got_lock && ($timeout > 0)) {
-                                       usleep($wait_sec * 1000000);
+                                       usleep(rand(10000, 200000));
                                }
                        } while (!$got_lock && ((time() - $start) < $timeout));
 
                        return $got_lock;
                }
 
-               $wait_sec = 2;
-
                do {
                        dba::lock('locks');
                        $lock = dba::select('locks', array('locked', 'pid'), array('name' => $fn_name), array('limit' => 1));
@@ -118,7 +115,7 @@ class Lock {
                        dba::unlock();
 
                        if (!$got_lock && ($timeout > 0)) {
-                               sleep($wait_sec);
+                               usleep(rand(100000, 2000000));
                        }
                } while (!$got_lock && ((time() - $start) < $timeout));