Slide 99
Slide 99 text
2. Guzzleと仲良くなる
Guzzle サンプルその4(非同期リクエスト Pool)
$params = [ // 文字列が識別子となっているケース
'foo' => ['id' => 1, '...'],
'baz' => ['id' => 2, '...'],
];
$requests = function ($params) use ($client) {
$uri = 'http://localhost/sample/';
foreach ($params as $key => $param) {
// yield で $key を渡すことにより、コールバックで識別子が使える
yield $key => fn() => $client->requestAsync('GET', $uri . $param['id']);
}
};
$pool = new Pool($client, $requests($params), [
'concurrency' => 10,
'fulfilled' => fn(Response $res, $key) => print("{$params[$key]['id']}\n"), // yieldで渡した$key
'rejected' => fn(ClientExceptionInterface $reason, $key) => [],
]);