Heim > Backend-Entwicklung > PHP-Tutorial > Php output buffering缓存及程序缓存_PHP教程

Php output buffering缓存及程序缓存_PHP教程

WBOY
Freigeben: 2016-07-20 11:13:01
Original
817 Leute haben es durchsucht

   在

 

下面测试

在测试前为了测试效果更明显,我们在

 

Output_buffering=off

 

Display_errors=on

代码

 

<strong><span 1</span> <span echo</span> "php"<span ;
</span><span 2</span> <span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span 3</span> <span echo</span> 'ok';</strong>
Nach dem Login kopieren

则会出现

php
Warning: Cannot modify header information - headers already sent by (output started at D:\www\apache\htdocs\test\t2.php:2) in D:\www\apache\htdocs\test\t2.php on line 3
ok

代码2:

<strong><span 1</span> <span ob_start</span><span ();
</span><span 2</span> <span echo</span> "php"<span ;
</span><span 3</span> <span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span 4</span> <span echo</span> 'ok';</strong>
Nach dem Login kopieren

结果就完全正确了

原因分析:

代码Phpecho ‘php’时已经向浏览器发送一个头信息,

当再出现

header("content-type:text/html;charset='utf-8'");

又看到一个头信息,这时已经打回了上面的头信息,无法更该便出错了。

代码‘php’时把要打给浏览器的数据先放到

为加深理解再看以下代码

代码

<strong><span ob_start</span><span ();
</span><span echo</span> "php"<span ;
</span><span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span echo</span> 'ok'<span ;
</span><span echo</span> '<hr/>'<span ;
</span><span $ob</span>=<span ob_get_contents</span><span ();
</span><span echo</span> <span $ob</span>;</strong>
Nach dem Login kopieren

会输出

Ob_get_contents()

Ob_get_contents()

代码

<strong><span 1</span> <span ob_start</span><span ();
</span><span 2</span> <span echo</span> "php"<span ;
</span><span 3</span> <span ob_clean</span>();<span //</span><span 清除缓存内容但不关闭缓存区,还能用(往里添加东西)</span>
<span 4</span> <span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span 5</span> <span echo</span> 'ok'<span ;
</span><span 6</span> <span echo</span> '<hr/>'<span ;
</span><span 7</span> <span $ob</span>=<span ob_get_contents</span><span ();
</span><span 8</span> <span echo</span> <span $ob</span>;</strong>
Nach dem Login kopieren

结果:

代码

<strong><span ob_start</span><span ();
</span><span echo</span> "php"<span ;
</span><span ob_end_clean</span>();<span //</span><span 清空缓存内容并关闭缓存区,ob_get_contents取不到内容</span>
<span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span echo</span> 'ok'<span ;
</span><span echo</span> '<hr/>'<span ;
</span><span $ob</span>=<span ob_get_contents</span><span ();
</span><span echo</span> <span $ob</span>;</strong>
Nach dem Login kopieren

结果:

代码

<strong><span ob_start</span><span ();
</span><span echo</span> "php"<span ;
</span><span ob_end_flush</span>();<span //</span><span 把缓存送到程序缓存内并关闭ob缓存</span>
<span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span echo</span> 'ok'<span ;
</span><span echo</span> '<hr/>'<span ;
</span><span $ob</span>=<span ob_get_contents</span><span ();
</span><span echo</span> <span $ob</span>;</strong>
Nach dem Login kopieren

代码

<strong><span ob_start</span><span ();
</span><span echo</span> "php"<span ;
</span><span ob_flush</span>();<span //</span><span 把Ob 缓存送到程序缓存,不关闭ob缓存</span>
<span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span echo</span> 'ok'<span ;
</span><span echo</span> '<hr/>'<span ;
</span><span $ob</span>=<span ob_get_contents</span><span ();
</span><span echo</span> <span $ob</span>;</strong>
Nach dem Login kopieren

结果:

Ob_clean()

清空

Ob_get_flush()

冲刷出缓存到程序缓存,关闭

代码

<strong><span Ob_start</span><span ();
</span><span echo</span> 'abc'<span ;
</span><span header</span>("content-type:text/html;charset='utf-8'"<span );
</span><span echo</span> 'hello'<span ;
</span><span Ob_flush</span><span ();
</span><span echo</span> 'aa'<span ;
</span><span echo</span> <span ob_get_contents</span><span ();
</span><span //</span><span abchelloaaaa</span></strong>
Nach dem Login kopieren

2.ob_flush(),flush()

代码

<strong><span ob_start</span><span ();
</span><span echo</span> 'a'<span ;
</span><span flush</span>();<span //</span><span 把Ob缓存冲刷到程序缓存再冲刷到浏览器输出,不影响ob缓存</span>
<span echo</span> <span ob_get_contents</span><span ();
</span><span //</span><span aa</span></strong>
Nach dem Login kopieren

代码

<strong><span ob_start</span><span ();
</span><span echo</span> 'a'<span ;
</span><span ob_flush</span>();<span //</span><span 把Ob缓存冲刷到程序缓存,ob里没有了缓存内容</span>
<span echo</span> "<br/>ob_con".<span ob_get_contents</span><span ();
</span><span //</span><span a     是按正常输出的,Ob里没内容</span></strong>
Nach dem Login kopieren

代码

<strong><span echo</span> <span str_repeat</span>(" ",1024);<span //</span><span 一些版本的 Microsoft Internet Explorer 只有当接受到的256个字节以后才开始显示该页面,所以必须发送一些额外的空格来让这些浏览器显示页面内容。 </span>
<span for</span>(<span $i</span>=0;<span $i</span><5;<span $i</span>++<span ){
</span><span echo</span> <span $i</span><span ;
</span><span echo</span> "<br/>"<span ;
</span><span sleep</span>(1<span );
</span><span flush</span><span ();
}</span></strong>
Nach dem Login kopieren

 

会一秒输出一个数字

如果没有

 

 

 

 

 

 

 

 

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/440408.htmlTechArticle在 若 下面测试 在测试前为了测试效果更明显,我们在 Output_buffering=off Display_errors=on 代码 "php" ("content-type:text/html;charset='utf-8'" 'ok'; 则会出...
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage