X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=src%2FModel%2FQueue.php;h=8b9e801c3ffc616af346e94322b4be112bbcc74c;hb=1e96faca4c9825bf6a8d8a50dc37498b764b9a3d;hp=2d7873a1e054160554aaf645ee286841afaf7339;hpb=06bce464bac1cd8dbf6bfe1cb5183918204b9563;p=friendica.git diff --git a/src/Model/Queue.php b/src/Model/Queue.php index 2d7873a1e0..8b9e801c3f 100644 --- a/src/Model/Queue.php +++ b/src/Model/Queue.php @@ -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]); } /**