X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCore%2FWorker.php;h=47da04b35cfe9b8d2a39775e4022ecf130deb340;hb=82972744a9cb77ca3d2f8db289e97fee2709ebd7;hp=9ec2f8f04aba814588af9212607705c1025088a9;hpb=3a158d00ebb734b9fd2945e6ab65ee1bcf7ab426;p=friendica.git diff --git a/src/Core/Worker.php b/src/Core/Worker.php index 9ec2f8f04a..47da04b35c 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -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)); }