我正在处理一个多进程任务(5个子任务),该任务在代码的某个点向API发出请求,获取数据,规范化并持久化到数据库。
在这种环境下,我遇到了一些问题,因为有时我会收到一个http 200响应,但是主体流的内容为空,看起来像这样,因为该问题默认情况下使用的是uri“ php:// temp”这似乎在多处理任务上产生冲突。我在发生这种情况的情况下测试了请求,并且该请求在单个进程中起作用。下面是回应正文的转储:
class GuzzleHttp\Psr7\Stream#474 (7) {
private $stream =>
resource(687) of type (stream)
private $size =>
NULL
private $seekable =>
bool(true)
private $readable =>
bool(true)
private $writable =>
bool(true)
private $uri =>
string(10) "php://temp"
private $customMetadata =>
array(0) {
}
}
有一种方法可以将Guzzle Stream Wrapper更改为自定义以避免冲突?
答案 0 :(得分:0)
这是我的错误,一旦读取主体流(如果需要重用),就需要倒回该流以再次读取它。
我还进行了一些更改,例如在每个孩子上创建一个新实例,而不是使用父级的guzzle客户副本。