ob_start和ob_gzhandler函数真的做什么
我知道ob_start打开输出缓冲,但我不完全理解它的含义。对我来说,这意味着它只是停止输出脚本数据。ob_start和ob_gzhandler函数真的做什么
这是真的吗?在这种情况下,浏览器如何输出数据,我是否必须最后使用ob_end_flush()来关闭它?
由于ob_gzhandler压缩网页,浏览器如何处理这些页面?
我在代码中看到了ob_start(“gzhandler”),因为ob_gzhandler压缩网页,ob_start(“gzhandler”)是什么意思,它是如何应用于这两个函数的?
所有帮助表示感谢!
输出缓冲意味着不是将输出直接写入标准输出流,而是将其写入缓冲区。
然后,当脚本结束时(或者当您拨打ob_end_flush()
时),该缓冲区的内容将写入stdout。
使用ob_gzhandler
将缓冲区的内容写入标准输出之前转换为缓冲区的内容,以便对其进行gzip压缩。 (支持gzip压缩的浏览器扭转这一在另一端,解压缩的内容。)
好吧,让我来解释一下这个样子,
只有缓冲体系的用途之一,但我认为这是有点酷。
首先我想让你看这个动画。
当你有一个PHP脚本,有这样的水平基础结构,例如你可能会写:建立数据库服务器
连接..选择
数据库: my_database
开始数据查询
数据查询结束(发现:200行)
...
等,但如果你不使用输出缓冲和冲洗,你会看到这些线当你所有的脚本执行的结束。但是,当我的想法是“我想看看我的脚本正在做什么时!”时,您首先需要......
对不起,您首先需要在您的php.ini文件中设置implicit_flush为“on”,然后重新启动Apache服务器来看到这一切。您需要通过“ob_start();”打开输出缓冲(简写“ob”),然后在您的代码“echo”语句的任意位置放置输出缓冲(简写“ob”),之后输入“ob_flush();”命令来查看您的脚本实时运行。
后来,它也可用于基于文件的静态内容缓存是这样的:在你的页面开始
- 地方ob_start()(或者你想捕捉的内容开始)
将ob_end_flush()放置在页面的最后(或者您想要捕捉的内容的结尾处);
then $ my_var = ob_get_contents();获取服务器创建并发送到客户端的所有HTML输出到my_var变量,然后按需要使用它。通常它被保存到一个文件,并通过检查文件的最后修改日期,它被用作静态缓冲。
我希望我能点亮你脑海中的一些灯泡。
我想你已阅读http://php.net/manual/en/book.outcontrol.php的所有内容 – 2012-03-15 00:27:22