PHP 全局范围和 Amp 异步并行执行

PHP global scope and Amp async parallel execution

我正在使用 AMP ParallelFunctions and AMP Promise wait 在 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') 定义的变量吗?

发生此问题是因为 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