php 输出缓冲 Output Control用法实例详解
本文详细解读了PHP的输出缓冲Output Control的概念和用法。通过实例介绍,让我们了解何为缓冲,以及在PHP中如何使用输出缓冲。
缓冲是一种数据处理机制,就像我们使用记事本编辑文件时,输入的内容并不会立即写入磁盘,而是保存在文件缓冲区中,待缓冲区写满或执行保存操作时,数据才会写入磁盘。同样,在PHP中,当我们通过echo,print等函数输出内容时,这些内容会被保存在output buffer中,直到php脚本执行完毕或者强制执行缓冲输出操作,内容才会在浏览器上显示。
现在的PHP版本默认是开启output buffer的,我们可以通过phpi文件中的output_buffering参数来查看缓冲区的大小。例如,在上述代码中,输出的数字并不是我们想要的逐个输出,而是在等待了10秒后,一次性地在页面上显示。这是因为默认开启了输出缓冲,echo的内容被保存在了ob中,然后等待1秒,继续echo下一个数,直到for循环执行完毕,整个php脚本执行结束,这时php会把缓冲内容一次性发送到浏览器。
如果想要逐个输出数字,我们需要关闭输出缓冲区并自行控制输出缓冲。我们可以通过ob_end_clean()来关闭缓冲区,然后使用flush()函数将输出发送到用户浏览器。我们还可以使用ob_flush()函数刷新php缓冲并清空缓冲区内容。值得注意的是,PHP允许存在多个缓冲区,我们需要自行管理这些缓冲区。
除了基本的缓冲操作,我们还可以利用ob系列函数实现更多功能。例如,通过ob_start()开启一个缓冲,将输出的内容全部放在缓冲区中,然后通过ob_get_contents()获取缓冲区的内容。这样我们就可以在不输出内容的情况下获取到输出的结果,方便我们进行后续处理。
```php
// 开启一个输出缓冲
echo "开启缓冲区,准备接收输出内容。";
ob_start();
// 循环输出数字,每个数字后面换行
for ($i = 0; $i < 10; ++$i) {
echo $i . '
';
}
// 获取缓冲区的全部内容,并将其保存到一个字符串中
$bufferContent = ob_get_contents();
echo "缓冲区的全部内容为:" . $bufferContent;
file_put_contents('./output.txt', $bufferContent); // 将缓冲区内容写入文件
ob_end_clean(); // 清空缓冲区但不关闭它
echo "缓冲区已清空。
";
// 再次循环输出数字,但这次会立即刷新输出,并且每次输出之间有1秒的延迟
for ($i = 0; $i < 10; ++$i) {
echo $i . '
';
flush(); // 立即刷新输出缓冲区
sleep(1); // 暂停一秒
}
?>
```
```php
echo "输出开始。";
echo '111'; // 输出字符串'111'
编程语言
- php 输出缓冲 Output Control用法实例详解
- js实现简单的网页换肤效果
- jsp-解决文件上传后重启Tomcat时文件自动删除问题
- 有关Server.Mappath详细接触
- Angularjs 动态改变title标题(兼容ios)
- 解析php中mysql_connect与mysql_pconncet的区别详解
- Asp.Net使用Bulk实现批量插入数据
- 原生js封装的一些jquery方法(详解)
- Node.js编程中客户端Session的使用详解
- ES6的解构赋值实例详解
- JS随机洗牌算法之数组随机排序
- React快速入门教程
- vue路由懒加载的实现方法
- javascript实现blob加密视频源地址的方法
- asp.net中利用Jquery+Ajax+Json实现无刷新分页的实例代
- Fullpage.js固定导航栏-实现定位导航栏