ob是output buffering的简称,输出缓冲区,缓冲区是通过中的output_buffering变量控制的。其默认值是off,可设为为on来打开buffer。打来buffer后,即便程序中没有用ob函数,实际上代码也是使用了缓冲区的。另外,不管php.ini中output_buffering的设置,cli模式下的php始终默认是关闭的。为什么要是缓冲区呢?简单来说,高速的cpu早早处理完自己的数据,想通过线路传递给用户,但是线路太窄了,一下输送不过去。如果引入缓冲区,cpu可以将快速将生成的数据放入缓冲区,然后自己哪儿凉快儿哪儿呆着这歇着去了。缓冲区根据指令适时将数据输出。这个样就合理解决了高速cpu与低速I/O设备的矛盾了。
ob的根本原则:如果ob缓存打开,则echo的数据首先放在ob缓存。如果是header信息,直接放置在程序缓存。当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器。
1)防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。其实这样的用法少用为好,养成良好的代码习惯。
2)捕捉对一些不可获取的函数的输出,比如phpinfo()会输出一大堆的HTML,但是我们没办法用一个变量例如$info=phpinfo();来捕捉,这时候ob就管用了。
3)对输出的内容做处理,例如进行gzip压缩,例如进行简繁转换,例如进行一些字符串替换。
4)生成静态文件,实际上的意思就是捕捉整页的输出,然后存成文件。经常在生成HTML,或者整页缓存中使用。
说明:当缓冲区激活时,所有来自PHP程序的非文件头信息均不会发送,而是保存在内部缓冲区。为了输出缓冲区的内容,能够正常的使用ob_end_flush()或flush()输出缓冲区的内容。
说明:这个函数会返回当前缓冲区中的内容,如果输出缓冲区没有激活,则返回 FALSE 。
说明:这个函数会返回当前缓冲区中的长度;和ob_get_contents一样,如果输出缓冲区没有激活。则返回 FALSE。
5、ob_end_flush :发送内部缓冲区的内容到浏览器,并且关闭输出缓冲区。
说明:这个函数发送输出缓冲区的内容(如果有的线、ob_end_clean:删除内部缓冲区的内容,并且关闭内部缓冲区
说明:使用过Perl的人都知道$=x的意义,这个字符串能打开/关闭缓冲区,而ob_implicit_flush函数也和那个一样,默认为关闭缓冲区,打开绝对输出后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()
// 过测试,发现这个大小的底限是256个字符长。这在某种程度上预示着cache以后接收的内容都会源源不断的被发送出去。
flush(); //这一部会使cache新增的内容被挤出去,显示到浏览器上
说明:flush()是一个效率很高的函数,它很有用的功能就是刷新browser的cache.
用以上的方法,就可以把不同用户的phpinfo信息存下来,这在以前恐怕没有很好的方法办到!其实上面就是将一些过程转化为函数的方法!
所谓静态模版技术是通过某种方式,使得用户在client端得到的是由PHP产生的html页面。如果这个html页面不会再被更新,那么当另外的用户再次浏览此页面时,程序将不会再调用PHP和相关的数据库,对某些信息量比较大的网站,类似这种的技术带来的好处是非常巨大的。
在本篇文章里小编给大家伙儿一起来分享了一篇关于php swoft框架实例用法,有需要的朋友们能学习参考下。
验证码想必大家都有见到过吧,在本文为大家介绍下PHP怎么来实现变色验证码,感兴趣的朋友可以参考下
这篇文章主要介绍了PHP面向对象类型约束用法,结合实例形式分析了php在面向对象程序设计中使用类型约束的原理与相关操作技巧,需要的朋友可以参考下
这篇文章主要介绍了PHP手机号码及邮箱正则表达式实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
首先,我们来讨论包含文件漏洞,首先要问的是,什么才是远程文件包含漏洞?回答是:服务器通过php的特性(函数)去包含任意文件时,由于要包含的这一个文件来源过滤不严,从而可去包含一个恶意文件,而我们大家可以构造这个恶意文件来达到邪恶的目的。
裁减字符串函数有很多,但是根据中文裁减字符串的却很少,在本文将为大家介绍下使用php是怎么来实现的,感兴趣的朋友呢别错过
在本篇文章里小编给大家理的是一篇关于php中cookie与session的区别点总结内容,有兴趣的朋友们可以借鉴学习下。
本篇文章给大家伙儿一起来分享php上传功能集后缀名判断和随机命名,代码写的简单易懂,感兴趣的朋友快来参考下吧
本篇文章是对jQuery+php实现ajax文件即时上传的办法来进行了详细的分析介绍,需要的朋友参考下