Как работают блоки буферизации вывода в PHP / Apache? - PullRequest
4 голосов
/ 15 января 2010

Предположим, я передаю случайные данные из PHP в браузер. Общее количество случайных данных о XGb, и эхо делается в кусках YKb. ob_start () не используется. Будут ли эхо-вызовы блокироваться после заполнения буферов PHP и Apache (клиент не может использовать данные с той же скоростью, с которой он генерируется)? Если да, то сколько по размеру буферов PHP и Apache? Правильно ли я понимаю, процесс:

  • PHP echo отправляет байты в выходной буфер php, пока он не заполнится. После этого эхо начинает блокироваться, пока некоторый буфер не будет отправлен в Apache и, таким образом, очищен
  • PHP отправляет данные из своего выходного буфера, пока буфер Apache не заполнится. После этого Apache прекращает получать данные из PHP и ждет, пока часть буфера не будет отправлена ​​клиенту и очищена.

P.S. Если вас удивляет глупость задачи, которую я собираюсь выполнить, я могу сказать, что я пишу небольшой скрипт балансировки трафика для выделенного сервера с применением определенных правил трафика (соотношение трафика IN / OUT должно поддерживаться на определенном уровне) .

1 Ответ

4 голосов
/ 15 января 2010

Это может быть связано с SendBufferSize Директивой .

Может быть, это поможет http://fplanque.com/dev/linux/why-echo-is-slow-in-php-how-to-make-it-really-fast

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...