色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

php 關閉buffer

周雨萌1年前6瀏覽0評論

在使用PHP時,大家都聽過緩沖區這個概念,指的是服務器在執行PHP腳本時為了提高運行效率而采用的一種緩存機制。緩沖區將腳本對頁面的輸出內容存儲在緩存中,當所有腳本也全部運行完之后,將所有的緩存一次性輸出到瀏覽器。雖然緩沖區的存在確實可以提高服務器執行PHP腳本的性能,但是在某些情況下關閉這個功能也是非常必要的。

有時候,我們會發現PHP腳本無法輸出內容到頁面,這不一定是代碼的問題,而有可能是緩沖區沒有被關閉導致的。例如:

<?php
header("Content-type:text/html;charset=utf-8");
$a= 10;
echo $a;
sleep(3); //模仿耗時操作
$b= 20;
echo $b;
?>

上面的腳本按理說應該先輸出 10 再過 3 秒鐘之后輸出 20,但是事實上它們都會在 3 秒鐘之后一起輸出到頁面上。這是因為開啟了緩存區,緩存了腳本運行過程中的輸出內容,并等到腳本全部運行完畢之后才將全部的結果一起輸出到頁面。這就是為什么兩個 echo 輸出語句之間加上了 sleep 也不起到阻塞的作用的原因。

其實我們只需要關閉此功能即可得到符合預期的效果,關閉方法如下:

<?php
header("Content-type:text/html;charset=utf-8");
ob_start(); //開啟緩存
$a= 10;
echo $a;
ob_end_clean(); //關閉緩存
sleep(3); //模仿耗時操作
$b= 20;
echo $b;
?>

開啟緩存的方法是 ob_start(),等到腳本運行完畢之后關閉緩存的方法則是 ob_end_clean()。這樣,就可以保證 PHP 腳本的所有結果都會實時輸出。

需要注意的是,如果要關閉緩沖區,必須在開啟輸出之前調用 ob_start() 函數。如果你在開啟了輸出之后再調用 ob_start() 函數,則會導致腳本拋出錯誤信息。

PHP 緩存機制是為了提高程序的運行速度而設計的,對于簡單的腳本而言,它確實可以提高性能,但是在某些特定情況下,緩存機制可能會帶來麻煩。比如在需要實時輸出內容的腳本中,關閉緩存器就是非常必要的。