Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以设置Guzzle+;HTTP/2上的池?_Php_Guzzle_Http2 - Fatal编程技术网

Php 是否可以设置Guzzle+;HTTP/2上的池?

Php 是否可以设置Guzzle+;HTTP/2上的池?,php,guzzle,http2,Php,Guzzle,Http2,Guzzle提供了一种发送并发请求的机制:Pool。我使用了文档中的示例:。它工作得很好,发送并发请求,除了一件事之外,一切都很棒:在这种情况下,Guzzle似乎忽略了HTTP/2 我准备了一个简化脚本,它向发送两个请求,第一个是使用Pool,第二个只是一个普通的Guzzle请求。只有常规请求通过HTTP/2连接 <?php include_once 'vendor/autoload.php'; use GuzzleHttp\Client; use GuzzleHttp\Pool; u

Guzzle提供了一种发送并发请求的机制:Pool。我使用了文档中的示例:。它工作得很好,发送并发请求,除了一件事之外,一切都很棒:在这种情况下,Guzzle似乎忽略了HTTP/2

我准备了一个简化脚本,它向发送两个请求,第一个是使用Pool,第二个只是一个普通的Guzzle请求。只有常规请求通过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,
]);

发现了错误:
新客户端()
如果传递到
请求被创建为
新请求()
,则实际上不接受
'version'
作为选项。协议版本必须作为每个请求的选项提供,或者请求必须创建为
$client->getAsync()
(或
->postAsync
或其他形式)

请参阅更正的代码:

...

$client = new Client([
    'debug' => true
]);
$requests = function () {
    yield new Request('GET', 'https://stackoverflow.com', [], null, '2.0');
};
/* OR
$client = new Client([
    'version' => 2.0,
    'debug' => true
]);
$requests = function () use ($client) {
    yield function () use ($client) {
        return $client->getAsync('https://stackoverflow.com');
    };
};
*/
$pool = new Pool($client, $requests());
$promise = $pool->promise();
$promise->wait();

...