php緩衝區與header函式之間的秘密

2021-08-27 05:38:29 字數 1087 閱讀 5531

我們在實際的開發中,是否聽說過在header之前不能有任何的實際輸出。甚至有的認為header函式必須寫在**的最前面。可是你是否試驗過header函式之前輸出東西?下來讓我們更深層次的了解一下

測試header之前有輸出

<?php

ob_start();

echo

'hello world!';

echo ob_get_contents();//輸出hello world!hello world!

在php.ini配置檔案中,修改緩衝區大小

一般在233行左右,預設是4096表示4096位元組也就是4kb

下來將4096修改為5,重新執行這段**

<?php

echo

'hello world!';

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

對於剛才測試不會出現警告或錯誤的現在卻出現了,錯誤就是:cannot modify header information - headers already sent

header與緩衝區之間的分析

為什麼我們之前說header之前不能有輸出

對於header函式,它是像客戶端傳送原始的http報頭,是宣告我們所寫網頁到底是什麼內容,所以一但這個宣告之前有內容就是錯誤的,是不符合http規則的

下來說說php中的header

在php中header是不經過緩衝區的,它會經過伺服器直接輸出到客戶端

解釋之前的警告cannot modify header information

當我們在header之前寫了一些輸出的話,它會先經過緩衝區。因此即便你寫的了前面,最終的輸出順序還是先header在echo。

可是一但我們輸出的內容快取區放不下,即之前的輸出』hello world!』 > 5個位元組。就會直接輸出出來,也就是這樣先輸出』hello world』再header(…),這樣就違背了真實的header之前不能有輸出

總結 在實際當中,我們最好還是把header寫在頁面最前面。因為我們就不確定我們header之前的輸出內容是否緩衝區能放下。

php緩衝區與header函式之間的秘密

我們在實際的開發中,是否聽說過在header之前不能有任何的實際輸出。甚至有的認為header函式必須寫在 的最前面。可是你是否試驗過header函式之前輸出東西?下來讓我們更深層次的了解一下 echo hello world header content type text html charse...

php緩衝區與header函式之間的秘密

我們在實際的開發中,是否聽說過在header之前不能有任何的實際輸出。甚至有的認為header函式必須寫在 的最前面。可是你是否試驗過header函式之前輸出東西?下來讓我們更深層次的了解一下 echo hello world header content type text html charse...

php 緩衝區,PHP的輸出緩衝區

1 什麼是緩衝區?緩衝區的作用是把輸入或者輸出的內容先放進記憶體,而不顯示或者讀取,最本質的作用就是協調高速cpu和相對緩慢的io裝置 磁碟等 的運作。2 php在執行的時候,在什麼地方有用到緩衝區?當執行php的時候,如果碰到了echo print r之類的會輸出資料的 php就會將要輸出的資料放...