什么之间的区别ob_flush(),并flush()和我为什么一定要同时调用?
ob_flush()
flush()
该ob_flush()参考说:
此函数将发送输出缓冲区的内容(如果有)。
该flush()参考说:
刷新PHP的写缓冲区以及PHP使用的任何后端PHP(CGI,Web服务器等)。
但是,它继续说:
[它]可能无法覆盖Web服务器的缓冲方案…
因此,在我看来,我可以一直使用ob_flush()所有时间。但是,这样做会得到奇怪的结果。有人可以简单地解释一下这是怎么回事吗?
ob_flush发送应用程序启动的缓冲区。ob_start()任何PHP脚本中都可能有多个嵌套的。ob_flush将当前内容传递到上层。
ob_flush
ob_start()
PHP本身(可以自行决定)可以缓冲输出。这取决于后端。但是通常FastCGI有一个套接字缓冲区。因此,还flush()需要调用以将当前内容发送到Web服务器。
FastCGI
现在,Web服务器本身可能实现了另一个缓冲方案(mod_deflate或内容过滤器),您对此没有影响。但这很少,因为它需要专门配置。
mod_deflate
无论如何,请同时使用两者。