狂饮池异步请求范围

Jon*_*n H 2 php guzzle

我正在使用以下代码通过Guzzle for PHP发出并发请求:

use GuzzleHttp\Pool;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;

$client = new Client();

$myvar = 12345;

$requests = function ($total) {
    $uri = 'http://127.0.0.1:8126/guzzle-server/perf';
    for ($i = 0; $i < $total; $i++) {
        yield new Request('GET', $uri);
    }
};

$pool = new Pool($client, $requests(100), [
    'concurrency' => 5,
    'fulfilled' => function ($response, $index) {
        // this is delivered each successful response
        var_dump($myvar);
    },
    'rejected' => function ($reason, $index) {
        // this is delivered each failed request
    },
]);

// Initiate the transfers and create a promise
$promise = $pool->promise();

// Force the pool of requests to complete.
$promise->wait();
Run Code Online (Sandbox Code Playgroud)

在函数范围之外,如何访问“已完成”处理程序部分中的数据?显示的代码显示为NULL,表示无法访问$ myvar变量。

Ale*_*kov 5

use声明会为您提供帮助。

'fulfilled' => function ($response, $index) use ($myvar) {
    // this is delivered each successful response
    var_dump($myvar);
},
Run Code Online (Sandbox Code Playgroud)