How output buffering blocks in PHP/Apache works?

。_饼干妹妹 提交于 2020-01-13 11:13:51

问题


Suppose I am echoing random data from PHP to browser. Total amount of random data is about XGb and echo is done in YKb chunks. ob_start() is not used. Will echo calls block after PHP and Apache buffers are full (client is not capable of consuming data with the same speed it is generated)? If so, how much in size PHP and Apache buffers? Do I understand correctly, the process:

  • PHP echo is sending bytes to php output buffer until it is full. After that echo starts to block until some buffer is sent to Apache and thus cleared
  • PHP is sending data from it's output buffer until Apache buffer is full. After that Apache stops receiving data from PHP and waits, until part the buffer is sent to client and cleared.

P.S. If you are suprised by the stupidity of the task I am going to achieve, I can say, that I am writting small traffic balancing script for a dedicatied server with certain traffic rules applied (IN/OUT traffic ratio should be kept at certain value).


回答1:


This can be related to the SendBufferSize Directive.

Maybe this will help http://fplanque.com/dev/linux/why-echo-is-slow-in-php-how-to-make-it-really-fast



来源:https://stackoverflow.com/questions/2072219/how-output-buffering-blocks-in-php-apache-works

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!