]> git.mxchange.org Git - friendica.git/commitdiff
Clean the worker queue directly from cron
authorMichael <heluecht@pirati.ca>
Mon, 2 May 2022 05:16:02 +0000 (05:16 +0000)
committerMichael <heluecht@pirati.ca>
Mon, 2 May 2022 05:16:02 +0000 (05:16 +0000)
src/Core/Worker.php

index 5bd281638f30b39072cba09a7fa9973b7d45f0ca..a548bbc8c76a02863ed5da4db0f98290d45e876f 100644 (file)
@@ -1149,6 +1149,32 @@ class Worker
 
                // Cleaning dead processes
                self::killStaleWorkers();
+
+               // Remove old entries from the workerqueue
+               self::cleanWorkerQueue();
+       }
+
+       /**
+        * Remove old entries from the workerqueue
+        *
+        * @return void
+        */
+       private static function cleanWorkerQueue()
+       {
+               DBA::delete('workerqueue', ["`done` AND `executed` < ?", DateTimeFormat::utc('now - 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);
+                       }
+               }
        }
 
        /**