php输出缓冲技术应用实践
PHP #缓冲2014-04-09 11:30
先看下面的这段php代码:
<?php //打开缓冲区 ob_start(); //打印内容 echo "这是一个网的php教程"; //设置cookie setcookie('php','yige.org'); //再打印输出内容 echo "<br>php输出缓冲技术演示";
输出缓冲打开了,即实现了php脚本还没有执行结束之前,是不会输出任何内容到浏览器的,这当然是不合理的,因为如果脚本的执行时间过长,页面长时间显示空白,这种用户体验可想而知!
有办法解决:ob_flush()函数会将已经运行的和收集到的输出缓冲立即发送给客户端:
<?php //打开缓冲区 ob_start(); //打印内容 echo "php教程"; //ob_flush操作,立即将上面的字符串发送到客户端浏览器 ob_flush(); //再打印输出内容 echo "<br>php输出缓冲技术演示";上段php代码运行结果如下:
php教程
php输出缓冲技术演示
可能因为脚本很小的原因,我们很难看到先输出“php教程”字符串,可以这样,用ob_clean()将输出
缓冲给清空:
<?php //打开缓冲区 ob_start(); //打印内容 echo "php教程"; //ob_flush操作,立即将上面的字符串发送到客户端浏览器 ob_clean(); //再打印输出内容 echo "<br>php输出缓冲技术演示";
上面php代码运行结果如下:
php输出缓冲技术演示
如果在一个脚本中做输出缓冲时需要马上结束,但是会将已收到的输出缓冲输出到客户端浏览器。
就用ob_end_flush()函数
从缓冲读取内容:(使用ob_get_contents()函数)
<?php ob_start(); echo "Hello "; $out1 = ob_get_contents(); echo "World"; $out2 = ob_get_contents(); ob_end_clean(); var_dump($out1, $out2); file_put_contents("php.txt", $out2); //最后把数据输出到文件中
最后提一个非常使用的功能,那就是回调函数:
<?php //使用回调函数改变输出内容 function myob_callback($con){ $con .= 'http://yige.org/'; return $con; } ob_start('myob_callback'); echo "一个网在线教程";
这段php代码的运行结果:
一个网在线教程 http://yige.org/
当然你可以写出更使用的回调函数,替换内容等等。你还可以参考这篇文章 http://yige.org/p/97
相关文章
- php结合js实现多文件上传 2014/04/09
- PHP最全防止sql注入的方法 2014/04/08
- php开发技巧 2014/04/08
- PHP中POSIX正则表达式介绍 2014/04/08
- CodeIgniter框架数据库备份的方法 2014/04/08
- PHP常用函数 2014/04/08
- php判断表单来源的方法 2014/04/08
- php强制http验证的代码 2014/04/08
- PHP提高页面执行效率的方法 2014/04/08
- php中&引用赋值的介绍 2014/04/08