我正在尝试连接到一个 API,该 API 使连接保持事件状态并发送分块数据。

我有一个使用 fsockopen 的解决方案,它写入和读取流并使用 while(!$stream->eof())

我想知道我是否可以使用 Guzzle 来实现相同的结果?

我看到了 Async 方法,但有人可以告诉我如何等待流吗?

最佳答案

Guzzle 6+ 支持 PRS-7 ,它将响应主体定义为流。您可以同步或异步请求数据,没关系。

为您的请求设置 stream option 也很重要:

$client = new Client(/* ... */);

$response = $client->get('http://some.url/', ['stream' => true]);
$bodyStream = $response->getBody();

while (!$bodyStream->eof()) {
    echo $bodyStream->read(1024);
}

关于用于 HTTP 保持事件的 PHP Guzzle 客户端,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35787743/

10-12 02:31