当我用php构建一组元素(比如100)时(在循环中)页面是仅在循环完成时发送到客户端,还是在循环完成之前客户端上的页面已经显示在客户端上?感谢
您可以在PHP代码中随时控制客户端浏览器的输出
示例立即发送到客户端
for($i = 0; $i < 100; $i ++) {
echo $i, " - sent ";
sleep(1);
flush(); // Send to client Instantly
}
环路后发送示例
ob_start();
for($i = 0; $i < 100; $i ++) {
echo $i, " - sent ";
sleep(1);
}
ob_end_flush() // Send after loop
示例3(这将只使用默认的输出缓冲区配置)
for($i = 0; $i < 100; $i ++) {
echo $i, " - sent ";
sleep(1);
}
最后(来源:Ninsuo)
有些浏览器在页面完全加载之前不会显示任何内容,因此我们并不总是控制刷新
这取决于如何配置输出缓冲。
你可以在这里看到不同的选项。
我想说,在脚本结束之前,您不能依赖于向用户显示的任何内容。虽然您可以设置PHP的缓冲设置,但这将通过Apache进行,Apache可能会缓冲,也可能不会缓冲,然后到浏览器,浏览器也可能会缓冲。
当用户数据可用时,最安全的方式是在页面加载后通过客户端浏览器的AJAX调用来显示用户数据。