php输出控制

首先来回顾下,php输出有哪些?

php的输出有echo、print、print_r、printf、var_dump、exit、以及php文件中的html内容,还有一个特殊的函数phpinfo。总之php输出就是php文件处理的结果内容(不包括header()、setcookie()等设置的头信息)。

php输出控制,实际是指php的输出缓存控制。php4逐渐完善了输出缓存控制,能够实现输出内容的二次处理。以PHP+Apache的服务组合来说明PHP的输出控制,见下图。


 
php默认配置是未开启输出缓存的,输出内容即时输出到apache缓存中,php脚本执行结束后,apache缓存中的内容才会发送到客户端(浏览器)。很多资料讲:“php未开启输出缓存时,php的输出会即时输出到客户端”,这种描述不够准确,以至于很多人对下面案例产生不理解。

 

服务端环境及配置:

  • PHP5.3.x + Apache2.2.x
  • PHP作为Apache模块安装
  • PHP配置 output_buffering = Off

PHP应用程序:

<?php
echo str_repeat("abcdefg", 200);
sleep(5);
echo "</br>end";
?>

 

浏览器访问时,并不能即时看到200个abcdefg的输出串,而是在脚本执行完后,浏览器界面将200个abcdefg和</br>end一起输出。这就说明了:此时,php的输出在apache的缓存中,脚本执行结束后,apache将缓存中的数据输出到浏览器。

在php3的时候,php就提供了一个函数来控制apache的缓存输出,这个函数就是flush,注意,这个函数不属于php输出缓存控制函数,这个函数控制的是apache的缓存(上图粉色部分)输出。

 

php的输出缓存控制是指控制php输出到apache的过程,未开启php输出缓存时,php直接输出到apache,apache将数据缓存下来;开启php输出缓存时,php输出到自己缓存中(上图蓝色部分)。

接下来,提三个问题,帮助初学者清楚的认识php的输出缓存控制。

  1. 怎么开启php输出缓存;
  2. 开启php输出缓存了,之后怎么控制缓存中的数据输出到apache,进而输出到浏览器;
  3. 开启php输出缓存,及对php输出缓存的控制对于phper来说有什么意义。
  • 开启php缓存有两种办法:

全局开启——修改php.ini中的配置项output_buffering = On

会话开启——调用ob_start。注意,这里不要用ini_set("output_buffering",1)

 

  • php输出控制函数:

ob_flush

ob_end_flush

ob_clean

ob_end_clean

ob_get_contents

ob_get_clean

ob_get_flush

 

  • php输出缓存控制应用


未完待续……

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值