]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Worker.php
Use the post language for the language detection / config for quality
[friendica.git] / src / Core / Worker.php
index 0ca17c19c1940afe44fd87580c95c0206e4f9000..d7eaeb15ebcada0c2c8cd31bc2328661be03e609 100644 (file)
@@ -362,7 +362,7 @@ class Worker
                        return false;
                }
 
-               // Check for existance and validity of the include file
+               // Check for existence and validity of the include file
                $include = $argv[0];
 
                if (method_exists(sprintf('Friendica\Worker\%s', $include), 'execute')) {
@@ -601,7 +601,7 @@ class Worker
                $rest    = round(max(0, $up_duration - (self::$db_duration + self::$lock_duration)), 2);
                $exec    = round($duration, 2);
 
-               Logger::info('Performance:', ['state' => self::$state, 'count' => $dbcount, 'stat' => $dbstat, 'write' => $dbwrite, 'lock' => $dblock, 'total' => $dbtotal, 'rest' => $rest, 'exec' => $exec]);
+               Logger::info('Performance:', ['function' => $funcname, 'state' => self::$state, 'count' => $dbcount, 'stat' => $dbstat, 'write' => $dbwrite, 'lock' => $dblock, 'total' => $dbtotal, 'rest' => $rest, 'exec' => $exec]);
 
                self::coolDown();
 
@@ -622,7 +622,7 @@ class Worker
                        Logger::info('Longer than 2 minutes.', ['priority' => $queue['priority'], 'id' => $queue['id'], 'duration' => round($duration/60, 3)]);
                }
 
-               Logger::info('Process done.', ['priority' => $queue['priority'], 'id' => $queue['id'], 'duration' => round($duration, 3)]);
+               Logger::info('Process done.', ['function' => $funcname, 'priority' => $queue['priority'], 'retrial' => $queue['retrial'], 'id' => $queue['id'], 'duration' => round($duration, 3)]);
 
                DI::profiler()->saveLog(DI::logger(), 'ID ' . $queue['id'] . ': ' . $funcname);
        }
@@ -885,7 +885,7 @@ class Worker
        /**
         * Returns waiting jobs for the current process id
         *
-        * @return array|bool waiting workerqueue jobs or FALSE on failture
+        * @return array|bool waiting workerqueue jobs or FALSE on failure
         * @throws \Exception
         */
        private static function getWaitingJobForPID()
@@ -1276,7 +1276,7 @@ class Worker
                $added = 0;
 
                if (!is_int($priority) || !in_array($priority, self::PRIORITIES)) {
-                       Logger::warning('Invalid priority', ['priority' => $priority, 'command' => $command, 'callstack' => System::callstack(20)]);
+                       Logger::warning('Invalid priority', ['priority' => $priority, 'command' => $command]);
                        $priority = self::PRIORITY_MEDIUM;
                }
 
@@ -1365,13 +1365,25 @@ class Worker
                return $new_retrial;
        }
 
+       /**
+        * Get the number of retrials for the current worker task
+        *
+        * @return integer
+        */
+       public static function getRetrial(): int
+       {
+               $queue = DI::app()->getQueue();
+               return $queue['retrial'] ?? 0;
+       }
+
        /**
         * Defers the current worker entry
         *
+        * @param int $worker_defer_limit Maximum defer limit 
         * @return boolean had the entry been deferred?
         * @throws \Exception
         */
-       public static function defer(): bool
+       public static function defer(int $worker_defer_limit = 0): bool
        {
                $queue = DI::app()->getQueue();
 
@@ -1384,6 +1396,10 @@ class Worker
 
                $max_level = DI::config()->get('system', 'worker_defer_limit');
 
+               if ($worker_defer_limit) {
+                       $max_level = min($worker_defer_limit, $max_level);
+               }
+
                $new_retrial = self::getNextRetrial($queue, $max_level);
 
                if ($new_retrial > $max_level) {