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 );
} ) );
维护此软件包的人也建议采用这种方法:
我正在使用 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 );
} ) );
维护此软件包的人也建议采用这种方法: