Запись в React PHP Stream только тогда, когда кто-то запрашивает данные - PullRequest
0 голосов
/ 02 мая 2020

Я пытаюсь найти способ производить и отправлять данные в поток, только когда кто-то просит об этом. После n секунд с полностью заполненным буфером (настраиваемым) я бы хотел явно закрыть поток.

В противном случае происходит следующее:

  • Я предоставляю конечную точку, которая отправляет поток данных 300Mb от Elasticsearch
  • Я открываю соединение с этой конечной точкой, но я не читаю никаких данных
  • Я создаю все свои данные потока на сервере, и эти данные буферизируются, но не отправлено.
  • Я могу вызвать поток или еще что-нибудь, но память там уже некоторое время.
  • Многие из них одновременно означают, что мой сервер отключается.

Здесь вы можете увидеть демонстрацию, где вы можете воспроизвести проблему

https://gist.github.com/mmoreram/ef71d05dd8aa507ced312e3391efd917

  • composer update
  • запустить сервер. Периодический таймер c будет выводить память процесса каждую секунду
  • выполнять запрос. php файл. Он откроет соединение и будет находиться в режиме ожидания в течение 10 секунд
  • . Вы увидите, что память сервера увеличивается до тех пор, пока соединение не будет закрыто из-за завершения сценария. В этот момент поток заканчивается и буфер удаляется. Память освобождена.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...