PHP Guzzle дает пустой поток тела с пустым содержимым в разветвленном процессе, как я могу изменить URI обертки потока на пользовательский? - PullRequest
0 голосов
/ 23 января 2019

Я работаю над мультиобработанной задачей (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 на специальный, чтобы избежать конфликтов?

1 Ответ

0 голосов
/ 23 января 2019

Была моя ошибка, когда мы читаем поток тела, если нам нужно повторно использовать, нам нужно перематывать поток, чтобы прочитать его снова.

Я также делаю некоторые изменения, такие как создание нового экземпляра для каждого дочернего элемента, вместо того чтобы использовать копию клиента-жадности от родительского элемента.

...