]> git.mxchange.org Git - friendica.git/blobdiff - src/Worker/Cron.php
Changed worker order
[friendica.git] / src / Worker / Cron.php
index 8ede97c2e48783ef891a9b24240e46798a49a7a9..a0144e8a2652003224b60d5531a89439beeca2d7 100644 (file)
@@ -24,6 +24,7 @@ namespace Friendica\Worker;
 use Friendica\Core\Hook;
 use Friendica\Core\Logger;
 use Friendica\Core\Worker;
+use Friendica\Database\DBA;
 use Friendica\DI;
 use Friendica\Model\Tag;
 
@@ -54,14 +55,21 @@ class Cron
                        copy($basepath . '/.htaccess-dist', $basepath . '/.htaccess');
                }
 
+               if (DI::config()->get('system', 'delete_sleeping_processes')) {
+                       self::deleteSleepingProcesses();
+               }
+
                // 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, 'UpdatePublicContacts');              
+               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');
@@ -72,9 +80,6 @@ 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()) {
 
@@ -96,25 +101,20 @@ class Cron
                        DI::config()->set('system', 'last_cron_hourly', time());
                }
 
-               // Daily cron calls
-               if (DI::config()->get('system', 'last_cron_daily', 0) + 86400 < time()) {
+               // Daily maintenance cron calls
+               if (Worker::isInMaintenanceWindow(true)) {
 
                        Worker::add(PRIORITY_LOW, 'UpdateContactBirthdays');
 
                        Worker::add(PRIORITY_LOW, 'UpdatePhotoAlbums');
 
-                       // update nodeinfo data
-                       Worker::add(PRIORITY_LOW, 'NodeInfo');
-
-                       Worker::add(PRIORITY_LOW, 'UpdateGServers');
-
-                       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');
@@ -132,4 +132,25 @@ class Cron
 
                DI::config()->set('system', 'last_cron', time());
        }
+
+       /**
+        * Kill sleeping database processes
+        *
+        * @return void
+        */
+       private static function deleteSleepingProcesses()
+       {
+               Logger::info('Looking for sleeping processes');
+               
+               $processes = DBA::p("SHOW FULL PROCESSLIST");
+               while ($process = DBA::fetch($processes)) {
+                       if (($process['Command'] != 'Sleep') || ($process['Time'] < 300) || ($process['db'] != DBA::databaseName())) {
+                               continue;
+                       }
+
+                       DBA::e("KILL ?", $process['Id']);
+                       Logger::notice('Killed sleeping process', ['id' => $process['Id']]);
+               }
+               DBA::close($processes);
+       }
 }