PHP Guzzle 在分叉过程中给出空内容流,我如何将流包装器的 uri 更改为自定义的?
PHP Guzzle gives empty body stream with empty contents on forked process, how i change the uri of the stream wrapper to a custom one?
我正在处理一项多处理任务(5 个子任务),该任务在代码的某个点向 API 发出请求,获取数据,规范化并保存到数据库。
我在这种环境下遇到 guzzle 问题,因为有时我有一个 http 200 响应,但正文流的内容是空的,看起来像它,因为 guzzle 默认使用 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 更改为自定义包装器以避免冲突吗?
是我的错误,一旦我们读取了正文流,如果我们需要重新使用,我们需要倒回流以再次读取它。
我还做了一些更改,比如在每个子节点上创建一个新实例,而不是使用父节点的 guzzle 客户端副本。
我正在处理一项多处理任务(5 个子任务),该任务在代码的某个点向 API 发出请求,获取数据,规范化并保存到数据库。
我在这种环境下遇到 guzzle 问题,因为有时我有一个 http 200 响应,但正文流的内容是空的,看起来像它,因为 guzzle 默认使用 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 更改为自定义包装器以避免冲突吗?
是我的错误,一旦我们读取了正文流,如果我们需要重新使用,我们需要倒回流以再次读取它。
我还做了一些更改,比如在每个子节点上创建一个新实例,而不是使用父节点的 guzzle 客户端副本。