当在PHP中输出内容时,页面不会马上显示信息,而是会缓存起来并在执行完PHP程序后一次性输出,这会导致页面等待过长时间,给用户带来不好的体验。为了解决这个问题,我们需要使用三个函数: flush()、ob_flush()、ob_end_flush()。
一、flush()
1.1 flush()函数的作用
flush()函数会将PHP输出的内容立即发送到浏览器端,而不是等到PHP脚本执行完毕后再发送。使用该函数可以保证在PHP执行过程中,数据能够实时从服务器向客户端发送,从而可以实现实时显示数据的功能。
1.2 flush()函数的使用方法
echo "hello world<br />";
flush(); #立即输出
echo "hi there<br />";
flush(); #再次立即输出
1.3 flush()函数的示例
下面是一个使用flush()函数得到输出实时显示功能的例子:
<?php
echo 'Press Start...<br />';
flush();
sleep(2);
echo 'Initializing...<br />';
flush();
sleep(2);
echo 'Loading modules...<br />';
flush();
sleep(2);
echo 'Ready to run.<br />';
flush();
?>
当PHP执行到flush()函数时,输出的内容就会立即推送到客户端并显示,在sleep()函数的时候可以看到输出的效果。
二、ob_flush()和ob_end_flush()
2.1 ob_flush()和ob_end_flush()函数的作用
在使用ob缓冲区来压缩、缓存输出的时候,PHP将所有输出内容都放到了缓冲区,当PHP代码执行结束或者缓存区清空时才发送数据到浏览器显示。ob_flush()和ob_end_flush()函数就是用来清空缓冲区的。
- ob_flush()函数将当前内容的缓冲区的内容输出到浏览器。
- ob_end_flush()函数用来清空当前缓冲区,关闭其写操作,释放缓冲区所占用的内存。
2.2 ob_flush()和ob_end_flush()函数使用方法
下面是一个使用ob缓冲区的例子:
<?php
ob_start(); //打开输出缓冲区
echo "hello world!"; //输出到缓冲区
ob_flush(); //将缓冲区内的内容发送到浏览器
echo "<br />";
ob_flush(); //再次将缓冲区的内容发送到浏览器
ob_end_flush(); //清空缓冲区并关闭其写操作
?>
2.3 ob_flush()和ob_end_flush()函数使用示例
下面是一个使用ob_flush()和ob_end_flush()函数的例子:
<?php
ob_start();
echo "Ready to run.<br />";
ob_flush();
sleep(2);
echo "Loading modules...<br />";
ob_flush();
sleep(2);
echo "Initializing...<br />";
ob_flush();
sleep(2);
echo "Press Start...<br />";
ob_flush();
ob_end_flush();
?>
当PHP执行到ob_flush()函数时,缓冲区内的内容就会推送到客户端并显示,当PHP执行到ob_end_flush()函数时,缓冲区的内容被清空并关闭缓冲区的写操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php中flush()、ob_flush()、ob_end_flush()的区别介绍 - Python技术站