]> git.mxchange.org Git - friendica.git/blobdiff - src/Model/Queue.php
removed memcache unit-test because lack of support in travis
[friendica.git] / src / Model / Queue.php
index 2d7873a1e054160554aaf645ee286841afaf7339..8b9e801c3ffc616af346e94322b4be112bbcc74c 100644 (file)
@@ -19,7 +19,22 @@ class Queue
        public static function updateTime($id)
        {
                logger('queue: requeue item ' . $id);
-               dba::update('queue', ['last' => DateTimeFormat::utcNow()], ['id' => $id]);
+               $queue = dba::selectFirst('queue', ['retrial'], ['id' => $id]);
+               if (!DBM::is_result($queue)) {
+                       return;
+               }
+
+               $retrial = $queue['retrial'];
+
+               if ($retrial > 14) {
+                       self::removeItem($id);
+               }
+
+               // Calculate the delay until the next trial
+               $delay = (($retrial + 3) ** 4) + (rand(1, 30) * ($retrial + 1));
+               $next = DateTimeFormat::utc('now + ' . $delay . ' seconds');
+
+               dba::update('queue', ['last' => DateTimeFormat::utcNow(), 'retrial' => $retrial + 1, 'next' => $next], ['id' => $id]);
        }
 
        /**