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 客户端副本。