Possible Duplicate:
what is output buffering?
我有一些内容需要一段时间才能由 PHP 生成。同时我想使用这个简单的 JS 技巧来显示“正在加载...”消息。一旦生成输出,该消息就会消失。
<p id="loading_msg">Loading...</p>
<h1>Hello</h1>
<?php
sleep(2); // This is the greedy function call
print '<p>This content definitely took a while to be generated !.</p>';
?>
<script type="text/javascript">
var e = document.getElementById("loading_msg");
e.style.display = "none";
</script>
问题是,而不是将所有内容发送到 sleep(2);
然后阻塞,它会等待所有页面生成之前,然后然后,一次全部发送。它显然破坏了我的“正在加载...”消息的目的,因为它在 2 秒过去之前不会出现。关于为什么以及如何解决这个问题有什么想法吗?
最佳答案
默认情况下,PHP 将缓冲您的输出并向用户发送较少数量的较大块。您可以使用flush
立即将写入缓冲区的内容发送给用户:
<p id="loading_msg">Loading...</p>
<h1>Hello</h1>
<?php
flush();
sleep(2);
如果您之前已通过调用 ob_start
启用了输出缓冲,则此操作将不起作用或 php.ini 指令 output_buffering
到 1
。
关于php - 为什么 PHP 一次发送所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544714/