假设我正在从 PHP 向浏览器回显随机数据。随机数据总量约为 XGb,回显以 YKb block 的形式完成。 ob_start() 未被使用。在 PHP 和 Apache 缓冲区已满后回显调用是否会阻塞(客户端无法以与生成数据相同的速度使用数据)?如果是这样,PHP 和 Apache 缓冲区的大小是多少?我理解的对吗,过程:
- PHP echo 正在将字节发送到 php 输出缓冲区,直到它已满。在那之后 echo 开始阻塞,直到一些缓冲区被发送到 Apache 并因此被清除
- PHP 正在从它的输出缓冲区发送数据,直到 Apache 缓冲区已满。之后 Apache 停止从 PHP 接收数据并等待,直到部分缓冲区被发送到客户端并被清除。
附言如果您对我要完成的任务的愚蠢感到惊讶,我可以说,我正在为应用了特定流量规则的专用服务器编写小型流量平衡脚本(IN/OUT 流量比率应保持在特定值) .
最佳答案
这可能与 SendBufferSize
Directive 有关.
也许这会有所帮助 http://fplanque.com/dev/linux/why-echo-is-slow-in-php-how-to-make-it-really-fast
关于php - PHP/Apache 中的输出缓冲 block 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2072219/