1

我正在使用AMP ParallelFunctionsAMP Promise 等待在 PHP 中创建异步执行。这个想法是同时调用多个 HTTP 端点并等待它们全部解决。

代码看起来像这样:

$result = wait( parallelMap( $myArray, function($item) use ($api) {
   return $api->call_api( $item );
} ) );

该函数$api->call_api位于不同的文件上,并使用全局常量中的 Bearer 令牌,PHP Warning: Use of undefined constant API_TOKEN每次异步进程调用它时都会抛出错误(它作为同步进程运行正常)

我怀疑发生这种情况parallelMap是因为 PHP 工作者无法访问API_TOKEN定义的相同范围。

任何想法如何让 wait 和 parallelMap 识别由定义的变量define('API_TOKEN', 'my-value')

4

1 回答 1

0

发生此问题是因为 PHP 线程工作者无权访问定义常量的全局范围。

我最终传递了创建一个局部变量,将全局变量分配给它,然后将它传递给匿名函数,正如 Sammitch 建议的那样。

像这样的东西:

$my_global = GLOBAL_CONSTANT;
$result = wait( parallelMap( $myArray, function($item) use ($api, $my_global) {
   return $api->call_api( $item, $my_global );
} ) );

对此软件包进行维护的人员也建议使用这种方法:

https://github.com/amphp/amp/issues/361

于 2021-09-17T17:13:00.210 回答