X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FWorker%2FCron.php;h=21f67c030bab8a96333707e216a9efa98e2adacd;hb=4faf08c0643d3e6bbe2a0a77be2ff8c1dbea4d5c;hp=4aef72e5f5112345aa58bf89ed8ff37f84e83d5b;hpb=78d063f35a4b2b706e4b78e4b384d30ea0d0a6e9;p=friendica.git diff --git a/src/Core/Worker/Cron.php b/src/Core/Worker/Cron.php index 4aef72e5f5..21f67c030b 100644 --- a/src/Core/Worker/Cron.php +++ b/src/Core/Worker/Cron.php @@ -1,6 +1,6 @@ 0) { Logger::info('Removing failed deliveries', ['inbox' => $delivery['inbox'], 'failed' => $delivery['failed']]); Post\Delivery::removeFailed($delivery['inbox']); } - - if ($delivery['failed'] == 0) { + if (($delivery['failed'] == 0) && $delivery['shared'] && !empty($delivery['gsid']) && GServer::isReachableById($delivery['gsid'])) { $result = ActivityPub\Delivery::deliver($delivery['inbox']); Logger::info('Directly deliver inbox', ['inbox' => $delivery['inbox'], 'result' => $result['success']]); continue; @@ -181,10 +185,12 @@ class Cron } if (Worker::add(['priority' => $priority, 'force_priority' => true], 'APDelivery', '', 0, $delivery['inbox'], 0)) { - Logger::info('Missing APDelivery worker added for inbox', ['inbox' => $delivery['inbox'], 'failed' => $delivery['failed'], 'priority' => $priority]); + Logger::info('Priority for APDelivery worker adjusted', ['inbox' => $delivery['inbox'], 'failed' => $delivery['failed'], 'priority' => $priority]); } } + DBA::close($deliveries); + // Optimizing this table only last seconds if (DI::config()->get('system', 'optimize_tables')) { Logger::info('Optimize start'); @@ -193,6 +199,41 @@ class Cron } } + /** + * Directly deliver messages or requeue them. + */ + private static function deliverPosts() + { + $deliveries = DBA::p("SELECT `gsid`, MAX(`failed`) AS `failed` FROM `delivery-queue` GROUP BY `gsid` ORDER BY RAND()"); + while ($delivery = DBA::fetch($deliveries)) { + if ($delivery['failed'] > 0) { + Logger::info('Removing failed deliveries', ['gsid' => $delivery['gsid'], 'failed' => $delivery['failed']]); + Delivery::removeFailedQueue($delivery['gsid']); + } + + if (($delivery['failed'] < 3) || GServer::isReachableById($delivery['gsid'])) { + $priority = Worker::PRIORITY_HIGH; + } elseif ($delivery['failed'] < 6) { + $priority = Worker::PRIORITY_MEDIUM; + } elseif ($delivery['failed'] < 8) { + $priority = Worker::PRIORITY_LOW; + } else { + $priority = Worker::PRIORITY_NEGLIGIBLE; + } + + if (Worker::add(['priority' => $priority, 'force_priority' => true], 'BulkDelivery', $delivery['gsid'])) { + Logger::info('Priority for BulkDelivery worker adjusted', ['gsid' => $delivery['gsid'], 'failed' => $delivery['failed'], 'priority' => $priority]); + } + } + + // Optimizing this table only last seconds + if (DI::config()->get('system', 'optimize_tables')) { + Logger::info('Optimize start'); + DBA::e("OPTIMIZE TABLE `delivery-queue`"); + Logger::info('Optimize end'); + } + } + /** * Add missing "intro" records. *