]> git.mxchange.org Git - friendica.git/blobdiff - src/Core/Worker.php
Merge pull request #12316 from VVelox/load_fix
[friendica.git] / src / Core / Worker.php
index 9ec2f8f04aba814588af9212607705c1025088a9..47da04b35cfe9b8d2a39775e4022ecf130deb340 100644 (file)
@@ -315,17 +315,7 @@ class Worker
                        return false;
                }
 
-               $valid = false;
-               if (strpos($file, 'include/') === 0) {
-                       $valid = true;
-               }
-
-               if (strpos($file, 'addon/') === 0) {
-                       $valid = true;
-               }
-
-               // Simply return flag
-               return $valid;
+               return (strpos($file, 'addon/') === 0);
        }
 
        /**
@@ -406,11 +396,6 @@ class Worker
                        return true;
                }
 
-               // The script could be provided as full path or only with the function name
-               if ($include == basename($include)) {
-                       $include = 'include/' . $include . '.php';
-               }
-
                if (!self::validateInclude($include)) {
                        Logger::warning('Include file is not valid', ['file' => $argv[0]]);
                        $stamp = (float)microtime(true);
@@ -583,7 +568,15 @@ class Worker
 
                // Set the workerLogger as new default logger
                if ($method_call) {
-                       call_user_func_array(sprintf('Friendica\Worker\%s::execute', $funcname), $argv);
+                       try {
+                               call_user_func_array(sprintf('Friendica\Worker\%s::execute', $funcname), $argv);
+                       } catch (\TypeError $e) {
+                               // No need to defer a worker queue entry if the arguments are invalid
+                               Logger::notice('Wrong worker arguments', ['class' => $funcname, 'argv' => $argv, 'queue' => $queue, 'message' => $e->getMessage()]);
+                       } catch (\Throwable $e) {
+                               Logger::error('Uncaught exception in worker execution', ['class' => get_class($e), 'message' => $e->getMessage(), 'code' => $e->getCode(), 'file' => $e->getFile() . ':' . $e->getLine(), 'trace' => $e->getTraceAsString()]);
+                               Worker::defer();
+                       }
                } else {
                        $funcname($argv, count($argv));
                }