当前位置:首页 > 日记 > 正文

在output_bufferingPHP中的一个简短的讨论

在output_bufferingPHP中的一个简短的讨论
首先,让我们谈谈PHP中的缓存!

在PHP中,我们大致可以将缓存划分为客户端缓存(浏览器缓存)、服务器端缓存(服务器缓存),因为PHP基于B/s架构,我们可以理解浏览器端缓存和服务器端缓存。

在服务器端PHP自己的缓存中,它可以分为两大类缓存!程序缓存和ob缓存!这也是我们服务器端缓存的主要内容!

PHP中缓存的输出顺序是:

打开PHP的输出缓存:回声,打印的PHP服务器缓冲-> output_buffering ->浏览器-> ->浏览器显示缓冲

PHP输出缓存不是打开的:回声、打印>缓冲区>缓冲区>服务器浏览器浏览器显示

输出缓存:IE浏览器是256bytes,Chrome和Firefox都1000bytes,只输出数据达到这个长度,或脚本结束,浏览器会在页面输出数据。

两。服务器端的响应过程

a,客户端向服务器端发送请求响应!

B,Apache服务器加载PHP模块,并打开相应的进程(或线程)来运行相应的PHP脚本页面!

c,不打开ob缓存,运行的结果都放在程序缓存中,然后打包并发送到浏览器!浏览器呈现页面以创建我们最后看到的网页!

d,当打开OB缓存时,运行结果将分别放入ob缓存和程序缓存中。当程序运行到最后一行时,它会将ob缓存中的数据返回给程序缓存,然后将其打包回浏览器!

三,OB缓存的常用用法!

一、output_buffering = 4096,以较小的(小于一个缓冲)
($ i = 0;$ i < 5;$ + +){

回声$ i;

睡眠(1);

}
运行结果:当所有脚本都完成时,输出不输出,因为数据不完全是缓冲区的大小。

B、output_buffering = 4096,输出数据量少(少于一个缓冲),关闭output_buffering,并修改output_buffering = 0的php.ini
回声str_repeat(1024); / /重复输出一个空白
($ i = 0;$ i < 5;$ + +){
$;
同花顺();
睡眠(1);
}

操作结果:由于OB被禁用,无需等待脚本完成,它可以输出,数据不在ob中,并且可以看到间歇性的间歇输出。

C、output_buffering = 4096,输出数据量较大(大于一个缓冲),不使用ob_start()
($ i = 0;$ i < 5;$ + +){
回声file_get_contents('f.txt)。$ I.;
睡眠(2);
}

操作结果:f.txt是文件大于4KB,因为它是默认值大于缓冲区,缓冲区空间不够,每当全缓冲输出,所以我们可以看到间歇输出。

D、output_buffering = 4096,输出数据量较大(大于一个缓冲),使用ob_start()
ob_start();
($ i = 0;$ i < 5;$ + +){
回声file_get_contents('f.txt)。$ I.;
睡眠(2);
}

运行结果:由于使用的ob_start(),它将设立缓冲区有足够的空间,那么它将被保存到脚本执行。

E、output_buffering =,用ob_start()
ob_start();
回声ABC;
标题(内容类型:文本/ HTML;字符集= UTF-8);
你好;
ob_end_flush();
回声aa;
ob_get_contents(回声);

运行结果:abc—

F、output_buffering =关闭,使用ob_start()
ob_start();
回声ABC;
标题(内容类型:文本/ HTML;字符集= UTF-8);
你好;
ob_end_flush();
回声aa;
ob_get_contents(回声);

运行结果:abc—

输出缓冲区堆积,这意味着当一个ob_start()是积极的,你可以调用另一个ob_start()。只是确保ob_end_flush适当数量的()倍称为正确。如果多输出回调函数是活跃的,输出的内容将被过滤通过他们在嵌套的顺序。

注:在PHP5。2,默认情况下OB被关闭,默认值在5.3之后打开。

常见的方法:

1.ob_start

激活output_buffering机制,一旦激活,脚本不再直接输出到浏览器,但暂时写入PHP缓冲区。直到脚本完成发送。

2.ob_get_contents

得到的数据在PHP缓存,注:打电话之前ob_end_clean(),或者你只会空字符。

3.ob_end_flush和ob_end_clean

ob_end_flush将在PHP输出缓冲的数据,但它不会是空的。

ob_end_clean不会输出,只能以明确的数据在PHP缓存。

4.ob_flush,冲洗,ob_implicit_flush

ob_flush刷新数据从PHP缓冲程序缓存

刷新将刷新程序到浏览器缓存。

ob_implicit_flush将打开或关闭绝对(隐含的)刷。绝对的(隐含的)刷将每个输出的电话后,导致涂刷,所以没有显式调用需要冲洗()

四,OB缓存的作用!
OB在应用的各个方面都缓慢存在,但我主要知道两个方面!

当站点准备创建静态站点时,选择OB缓存是一个不错的选择!

B,警告:不能修改头信息-错误已经发送的头!

造成错误的原因是由于响应头和相应主体的位置错位,在正常情况下,服务器返回到浏览器的相应内容,应该是:响应头+响应体!
但是,如果我们启动OB缓存,相应的头信息(通常由头()函数设置)将被放入程序缓存中。

和其他的输出,如回声print_r var_dump,将OB缓存!

当程序结束,或者OB缓存关闭事实时,由OB缓存的内容被放入程序缓存中!确保响应头信息始终位于响应的主要内容之前!

以上是本文的全部内容,希望大家能喜欢。

相关文章

用PS制作2英寸蓝色或红色的照片。

用PS制作2英寸蓝色或红色的照片。

照片,红色,蓝色,电脑软件,PS,本教程是向朋友介绍PS制作2英寸蓝色或红色证书的照片。这个教程比较简单,但是很实用。值得学习和推荐。让我们一起学习。 我们通常需要2英寸的数码证书照片。有时我们需要蓝色的底,有时需要红色的。那么我们如何…

Word2007中如何将和图形Word2007教

Word2007中如何将和图形Word2007教

教程,图形,如何将,电脑软件,Word2007使用新的图形引擎,它消失在Word 03版组合图形的功能,这使得它的图形编辑很麻烦。所以在Word2007中,如何结合图形这里介绍一个更快的方法,希望对你有帮助。 关于Word2007方法保存docx文档为DOC文档,打开文件文…

一个用CSS3实现背景变化的方法

一个用CSS3实现背景变化的方法

方法,背景,电脑软件,本文主要介绍的方法通过CSS3实现背景梯度,作者在这里没有给出演示效果…有需要的朋友可以参考下。 在CSS3,你必须依靠图形处理软件如Adobe PS图象处理软件使梯度,然后添加背景图片的元素。现在,使用CSS,可以创建各种不同的渐…

Excel多行或多列批量请求和Excel函

Excel多行或多列批量请求和Excel函

函数,多列,批量,电脑软件,Excel,在日常工作中,许多朋友在制作数据表时经常使用公式运算,包括在多个表中添加和添加数据。 操作步骤 第一步是将图中的列数据添加到B列中的数据中,结果将显示在C列中。 第二步,我们需要总结的A1和B1的两个细胞。…

拒绝经典签名QQ签名

拒绝经典签名QQ签名

经典,电脑软件,QQ,个性体现多方面。现在是互联网时代。你想签署一个签名来表达你的个性吗让我们一起来理解它。我希望你喜欢它,喜欢记住它。 1,食物要吃,喝的要喝,不要把尴尬放在心上;走开,留下来,Lao Tzu不会坚强。 2,不要数烂的诺言,呵呵。只要你…

2015日,最新的雨天在心情中表达了经

2015日,最新的雨天在心情中表达了经

心情,雨天,个性签名,经典,最新,雨天,心情也是忧郁的,此时表达心情的一句话。今天,萧边将选择的下雨天,心情个性签名,心情说话,欢迎您的阅读。 1。我找不到我喜欢的雨伞了。我宁愿在雨中。 2,下雨了,我选择躲在雨中,所以你看不见我的眼泪。 三.我讨厌…

WPS如何嵌入视频WPS演示教程

WPS如何嵌入视频WPS演示教程

教程,演示,视频,电脑软件,WPS,当我们使用WPS PPT演讲时,我们经常需要嵌入视频和解释数据,那么WPS是如何嵌入到视频中的呢 1,首先我们打开WPS演示,然后我们选择一个对象,点击进入电影;。 2,在弹出对话框中选择要插入的视频。…

使用PS图象处理软件修复严重损坏的

使用PS图象处理软件修复严重损坏的

教程,损坏,肖像,图象,处理软件,有时,由于一些意外的情况,我们对肖像画非常满意,但却有严重的形象损害。我们如何通过后期修复这些损伤今天,他和朋友们分享了一个修理图片的小技巧,从朋友那里学习。 有时,由于一些意外的情况,我们对肖像画非常满意…

QQ空间相册的权利是什么QQ常见问题

QQ空间相册的权利是什么QQ常见问题

常见问题,空间,权利,电脑软件,QQ,目前,QQ空间相册有两种权利: 一个,谁可以参观: 1,都可以看到; 2。所有人都通过回答问题访问; 3,所有QQ好友都可以看到; 4,只有师父才能看见。 两。其他权利: 1,允许QQ好友重新加载和分享; 2、允许QQ好友复习圈子; …

面向对象的Javascript实现方法综述

面向对象的Javascript实现方法综述

方法,综述,面向对象的,电脑软件,Javascript,本文的示例总结了Javascript面向对象的实现方法,供大家参考,具体分析如下: 方法1: var 名称:你好世界, 年龄:22岁, SayHello:函数(){ 警报(我 'm' this.name ',和我这age'years老); } }; Person.sayHello(); / /我世…

简单的下拉菜单和CSS窗体和弹出图

简单的下拉菜单和CSS窗体和弹出图

图层,下拉菜单,窗体,注释,弹出,本文主要介绍CSS中下拉菜单、窗体和弹出层的简单注释,这是一些CSS入门学习的基础知识。 下拉菜单 显示:块,框将从收缩包围元素转换为扩展填充父元素。 位置:绝对是相对于父元素的绝对位置,它的坐标相对于父元素,如…

jQuery(函数($){})(jQuery)。

jQuery(函数($){})(jQuery)。

函数,电脑软件,jQuery,简单的说 (函数($){) 代码 }(jQuery) 声明一个匿名函数,即将jQuery对象作为函数传递给一个参数。 举个例子 全局 全局字符串…; (函数) (函数()) (函数())第三 (函数())第四层对更慢的全局访问 console.time(全球的); 对于(var i = 0;i STR = …