最近在做一个ai 生成文字的项目,
使用 workerman/http-client 协程的写法,请求服务接口。(接口与 openai 的响应一致,是正常的),想实现边请求,边响应,读取内容的代码如下
`
public function getIterator(): Generator
{
while (!$this->response->getBody()->eof()) {
$line = $this->readLine($this->response->getBody());
dump($line);
yield $response;
// yield $this->responseClass::from($response);
}
}
private function readLine(StreamInterface $stream): string
{
$buffer = '';
while (!$stream->eof()) {
if ('' === ($byte = $stream->read(1))) {
return $buffer;
}
$buffer .= $byte;
if ($byte === "\n") {
break;
}
}
return $buffer;
}
`
但是现在发现 workerman/http-clien客户端好像只有完全读取响应以后才会输出。
更换了 guzzle\client 客户端,设置 stream =true 可以实现想要的效果,但是 guzzle 请求好像是阻塞的,无法同时响应多个,
所以想请问大佬有没有什么比价好的解决方案
用2.1.0或则后续更高版本
用法类似
直接市场购买官方的ai就知道怎样写了😎
还是老大 威武,早知道就购买源码看一下了,卡了好几天了
在webman中 能这么用嘛?
好像不能直接用,需要自定义进程
不能嘛?