Я пытаюсь вызвать пользовательскую функцию, используя Worker \ enqueueCallable.
Я поместил функцию в отдельный файл и использовал composer для ее автозагрузки.
И я получаю сообщение об ошибке:
Неустранимая ошибка: Uncaught TypeError: Аргумент 1, передаваемый в Amp \ Parallel \ Worker \ enqueueCallable (), должен вызываться, заданная строка "
Структура моей папки
Project Folder/
app/
funcs.php
caller.php
main.php
composer.json
Используемое приложение пространства имен сверху в вызывающем абоненте. php и функции. php
А затем в composer. json использовали следующий фрагмент и использовали composer dumpautoload -o
{
"autoload": {
"psr-4": {
"app\\": "app/"
},
"files": [ "app/funcs.php" ]
},
"require": {
"amphp/parallel": "^1.3",
"amphp/parallel-functions": "^0.1.3"
}
}
С main. php Я звоню caller. php, который вызывает функцию, определенную в funcs. php
funcs. php
namespace app;
function f1($param1){
#Do some stuff
}
caller. php
namespace app;
use Amp\Parallel\Worker;
use Amp\Promise;
class cls
{
function __construct()
{
}
function Invoker()
{
// If I call the function, its working.
f1($param1);
// When I am using its not working.
$promises[] = Worker\enqueueCallable('f1', $param1);
}
}
main. php
require __DIR__ . '\vendor\autoload.php';
use app\cls;
$obj = new cls();
$obj->Invoker();
Я использую windows -10, сервер WAMP, с PHP версия 7.3.5.