为什么PHP一次发送所有内容
Why does PHP send it all at once?
可能重复:
什么是输出缓冲?
我有一些内容需要一段时间才能由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
来启用输出缓冲,那么这将不起作用。
在某些Web服务器/浏览器上使用'flush'可能会起作用(meachar正确地说,在启用输出缓冲时它不会起作用,但这并不意味着它会在其余时间起作用)。
由Web服务器决定何时恢复到分块编码——只要不压缩输出流,大多数服务器都会在调用flush时启动分块响应。然后,由浏览器决定何时开始呈现不完整的响应——行为也会因内容而异——例如,在表具有结束标记之前,没有人会开始呈现表。
在接收页面中处理它的更好的解决方案是在发送页面中处理,例如使用litebox来显示消息。或者,消息可以呈现在临时页面中,该页面重定向到生成的内容。
相关文章:
- JavaScript 只在 php 代码中执行一次
- Ajax发布到PHP脚本,每5秒查询一次MySQL数据库的性能/问题
- 在php中使用jquery每隔5秒更改一次图片
- 如何附加一个id's的详细信息只通过php或jquery提供一次
- Ajax 使用函数每秒获取一次 php 数据
- 为什么PHP一次发送所有内容
- 每次点击一次,jQueryAJAX就会发布到PHP
- XMLhttpRequest Ajax PHP 运行不止一次
- 尝试连续一次显示多个 php 文件
- 背景图像旋转器.php + jQuery每4秒显示一次随机照片
- PHP 在输入内单击一次
- 使用 jQuery 每 xy 秒执行一次 PHP 脚本
- 嵌套在jQuery中的PHP只执行一次.我希望它每次都执行
- 一个静态 php 变量,只分配一次,永远不会更改
- AJAX 请求只发生一次(PHP 表单请求)
- 每小时自动运行一次PHP页面 - 无需使用Cron作业
- 如何每十秒刷新一次PHP脚本
- 每10秒运行一次PHP脚本
- 使用ajax请求每隔x分钟运行一次php脚本
- 每隔x分钟调用一次PHP函数