php中flush()、ob_flush()、ob_end_flush()的区别介绍

当在PHP中输出内容时,页面不会马上显示信息,而是会缓存起来并在执行完PHP程序后一次性输出,这会导致页面等待过长时间,给用户带来不好的体验。为了解决这个问题,我们需要使用三个函数: flush()、ob_flush()、ob_end_flush()。

当在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()的区别介绍

基础教程推荐