Guzzle предоставляет механизм отправки одновременных запросов: Pool. Я использовал пример из документов: http://docs.guzzlephp.org/en/stable/quickstart.html#concurrent -запросы . Он работает вполне нормально, отправляет параллельные запросы, и все замечательно, кроме одного: кажется, что Guzzle игнорирует HTTP / 2 в этом случае.
Я подготовил упрощенный скрипт, который отправляет два запроса на { ссылка }, первый использует пул, второй - обычный запрос на жадность. Только обычный запрос подключается через HTTP / 2.
<?php
include_once 'vendor/autoload.php';
use GuzzleHttp\Client;
use GuzzleHttp\Pool;
use GuzzleHttp\Psr7\Request;
$client = new Client([
'version' => 2.0,
'debug' => true
]);
/************************/
$requests = function () {
yield new Request('GET', 'https://stackoverflow.com');
};
$pool = new Pool($client, $requests());
$promise = $pool->promise();
$promise->wait();
/************************/
$client->get('https://stackoverflow.com', [
'version' => 2.0,
'debug' => true,
]);
Вот вывод: https://pastebin.com/k0HaDWt6 (я выделил важные части с помощью "!!!!!")
Кто-нибудь знает, почему Guzzle делает это и как заставить Pool работать с HTTP / 2?