X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FWorker%2FCron.php;h=1901766d3ac1d4d341f69322388c902ae8704b44;hb=bf8fb215a9cc554b5ec5b774168a52fb56fa43e6;hp=3eb93ba26d802049550c30fb9fc018f34ee7f154;hpb=34cce68dc623ede54539bde529f90f13515b677b;p=friendica.git diff --git a/src/Worker/Cron.php b/src/Worker/Cron.php index 3eb93ba26d..1901766d3a 100644 --- a/src/Worker/Cron.php +++ b/src/Worker/Cron.php @@ -24,9 +24,8 @@ namespace Friendica\Worker; use Friendica\Core\Hook; use Friendica\Core\Logger; use Friendica\Core\Worker; -use Friendica\Database\DBA; use Friendica\DI; -use Friendica\Util\DateTimeFormat; +use Friendica\Model\Tag; class Cron { @@ -46,10 +45,26 @@ class Cron } } - Logger::notice('cron: start'); + Logger::notice('start'); + + // Ensure to have a .htaccess file. + // this is a precaution for systems that update automatically + $basepath = $a->getBasePath(); + if (!file_exists($basepath . '/.htaccess') && is_writable($basepath)) { + copy($basepath . '/.htaccess-dist', $basepath . '/.htaccess'); + } // Fork the cron jobs in separate parts to avoid problems when one of them is crashing - Hook::fork($a->queue['priority'], "cron"); + Hook::fork(PRIORITY_MEDIUM, 'cron'); + + // Poll contacts + Worker::add(PRIORITY_MEDIUM, 'PollContacts'); + + // Update contact information + Worker::add(PRIORITY_LOW, 'UpdateContacts'); + + // Update server information + Worker::add(PRIORITY_LOW, 'UpdateGServers'); // run the process to update server directories in the background Worker::add(PRIORITY_LOW, 'UpdateServerDirectories'); @@ -60,15 +75,29 @@ class Cron // Call possible post update functions Worker::add(PRIORITY_LOW, 'PostUpdate'); - // Repair entries in the database - Worker::add(PRIORITY_LOW, 'RepairDatabase'); + // Hourly cron calls + if (DI::config()->get('system', 'last_cron_hourly', 0) + 3600 < time()) { - // once daily run birthday_updates and then expire in background - $d1 = DI::config()->get('system', 'last_expire_day'); - $d2 = intval(DateTimeFormat::utcNow('d')); + // Update trending tags cache for the community page + Tag::setLocalTrendingHashtags(24, 20); + Tag::setGlobalTrendingHashtags(24, 20); - // Daily cron calls - if ($d2 != intval($d1)) { + // Search for new contacts in the directory + if (DI::config()->get('system', 'synchronize_directory')) { + Worker::add(PRIORITY_LOW, 'PullDirectory'); + } + + // Delete all done workerqueue entries + Worker::add(PRIORITY_LOW, 'CleanWorkerQueue'); + + // Clear cache entries + Worker::add(PRIORITY_LOW, 'ClearCache'); + + DI::config()->set('system', 'last_cron_hourly', time()); + } + + // Daily maintenance cron calls + if (Worker::isInMaintenanceWindow(true)) { Worker::add(PRIORITY_LOW, 'UpdateContactBirthdays'); @@ -77,75 +106,35 @@ class Cron // update nodeinfo data Worker::add(PRIORITY_LOW, 'NodeInfo'); - Worker::add(PRIORITY_LOW, 'UpdateGServers'); + // Repair entries in the database + Worker::add(PRIORITY_LOW, 'RepairDatabase'); Worker::add(PRIORITY_LOW, 'Expire'); - Worker::add(PRIORITY_MEDIUM, 'DBClean'); + Worker::add(PRIORITY_LOW, 'ExpirePosts'); Worker::add(PRIORITY_LOW, 'ExpireConversations'); Worker::add(PRIORITY_LOW, 'CleanItemUri'); + Worker::add(PRIORITY_LOW, 'RemoveUnusedContacts'); + + Worker::add(PRIORITY_LOW, 'RemoveUnusedAvatars'); + // check upstream version? Worker::add(PRIORITY_LOW, 'CheckVersion'); - Worker::add(PRIORITY_LOW, 'CheckdeletedContacts'); + Worker::add(PRIORITY_LOW, 'CheckDeletedContacts'); if (DI::config()->get('system', 'optimize_tables')) { Worker::add(PRIORITY_LOW, 'OptimizeTables'); } - DI::config()->set('system', 'last_expire_day', $d2); - } - - // Hourly cron calls - if (DI::config()->get('system', 'last_cron_hourly', 0) + 3600 < time()) { - - // Search for new contacts in the directory - if (DI::config()->get('system', 'synchronize_directory')) { - Worker::add(PRIORITY_LOW, 'PullDirectory'); - } - - // Delete all done workerqueue entries - DBA::delete('workerqueue', ['`done` AND `executed` < UTC_TIMESTAMP() - INTERVAL 1 HOUR']); - - // Optimizing this table only last seconds - if (DI::config()->get('system', 'optimize_tables')) { - // We are acquiring the two locks from the worker to avoid locking problems - if (DI::lock()->acquire(Worker::LOCK_PROCESS, 10)) { - if (DI::lock()->acquire(Worker::LOCK_WORKER, 10)) { - DBA::e("OPTIMIZE TABLE `workerqueue`"); - DBA::e("OPTIMIZE TABLE `process`"); - DI::lock()->release(Worker::LOCK_WORKER); - } - DI::lock()->release(Worker::LOCK_PROCESS); - } - } - - // Clear cache entries - Worker::add(PRIORITY_LOW, 'ClearCache'); - - DI::config()->set('system', 'last_cron_hourly', time()); - } - - // Ensure to have a .htaccess file. - // this is a precaution for systems that update automatically - $basepath = $a->getBasePath(); - if (!file_exists($basepath . '/.htaccess') && is_writable($basepath)) { - copy($basepath . '/.htaccess-dist', $basepath . '/.htaccess'); + DI::config()->set('system', 'last_cron_daily', time()); } - // Poll contacts - Worker::add(PRIORITY_HIGH, 'PollContacts'); - - // Update contact information - Worker::add(PRIORITY_LOW, 'UpdatePublicContacts'); - - Logger::notice('cron: end'); + Logger::notice('end'); DI::config()->set('system', 'last_cron', time()); - - return; } }