什麼是輸出緩衝,爲什麼在PHP中使用它?什麼是輸出緩衝?
什麼是輸出緩衝?
回答
Output Buffering for Web Developers, a Beginner’s Guide:
沒有輸出緩衝(默認值),作爲PHP處理通過腳本的HTML被髮送到片瀏覽器。通過輸出緩衝,您的HTML存儲在一個變量中,並作爲腳本末尾的一部分發送到瀏覽器。
對於Web開發人員
- 單獨打開輸出緩衝優勢輸出緩衝的減少所花費的時間來下載和渲染我們的HTML,因爲它沒有被髮送到瀏覽器中的片段作爲PHP處理HTML量。
- 我們可以用PHP字符串做的所有花哨的東西,我們現在可以將整個HTML頁面作爲一個變量來完成。
- 如果您在設置Cookie時遇到了「警告:無法修改標題信息 - 已由(輸出)發送的標題」消息,您將很高興知道輸出緩衝是您的答案。
輸出控制函數允許當輸出從 腳本發送你 控制。這可以在 幾種不同的情況下有用, 特別是如果你需要在 開始輸出數據後發送標題 到瀏覽器。輸出 控制功能不會影響 使用header()或 setcookie()發送的報頭,只能使用 echo()和PHP 數據塊之間的數據代碼。
http://php.net/manual/en/book.outcontrol.php
更多資源:
Output buffering是使用PHP來提高性能,並執行一些技巧。
您可以讓PHP將所有輸出存儲到緩衝區中,並立即輸出所有輸出以提高網絡性能。
在某些情況下,您可以訪問緩衝區內容而無需將其發送回瀏覽器。
考慮這個例子:
<?php
ob_start();
phpinfo();
$output = ob_get_clean();
?>
上面示例的輸出捕獲到一個變量,而不是將其發送給瀏覽器的。 output_buffering默認關閉。
- 在發送內容後想要修改標頭的情況下,可以使用輸出緩衝。
考慮這個例子:
<?php
ob_start();
echo "Hello World";
if ($some_error)
{
header("Location: error.php");
exit(0);
}
?>
這裏和Ax相同的問題:沒有啓動輸出緩衝而沒有稍後關閉它,會讓你的腳本遇到各種問題? – 2012-09-24 21:28:52
當您調用其中一種刷新方法(例如'ob_flush()'或'ob_end_flush()')時,刷新緩衝區。當腳本結束時,緩衝區的內容也會被刷新,突然或以其他方式,所以不應該有問題。 – 2012-09-25 06:09:51
正如名字在這裏建議使用的內存緩衝區管理腳本輸出的顯示方式。
這裏是一個very good tutorial爲主題
- 1. 輸出緩衝?爲什麼不?
- 2. 什麼是標準輸入緩衝區?
- 3. 什麼是緩衝區?什麼是緩衝讀取和寫入?
- 4. fwrite是否緩衝輸出?
- 5. 輸出緩衝還是輸出數據
- 6. 什麼是節點中的輸出緩衝?
- 7. 「輸出popen()流默認完全被緩衝」是什麼意思?
- 8. 什麼是IO流緩衝?
- 9. 什麼是緩衝的
- 10. 什麼是緩衝區?
- 11. PHP輸出緩衝
- 12. 輸出緩衝區
- 13. Perl緩衝輸出
- 14. 緩衝輸出流
- 15. libdtrace緩衝輸出
- 16. 爲什麼不的BufferedReader緩衝輸入?
- 17. 。調用mdsplib - METAR - 緩衝區溢出 - 這個valgrind輸出是什麼意思?
- 18. 爲什麼在創建輸出緩衝區時需要刷新輸出緩衝區?
- 19. PHP輸出緩衝區不是空的?
- 20. 如何關閉輸入/輸出緩衝區中的輸入/輸出緩衝區
- 21. 輸出流緩衝輸出流附加
- 22. 在java中緩衝緩衝流的結果是什麼?
- 23. 包含輸出緩衝區?
- 24. PHP輸出緩衝變量
- 25. javascript輸出緩衝區
- 26. 停止PHP輸出緩衝
- 27. PHP輸出緩衝檢查?
- 28. 輸出緩衝問題 - PHP
- 29. PHP輸出緩衝堆疊
- 30. 無緩衝Bash輸出
+1。這裏有另一個有用的鏈接:http://php.net/manual/en/function.ob-start.php - 當處理一個函數時,它也很有幫助,這個函數可以回顯你希望存儲在變量中的值。 – Cam 2010-05-14 06:21:59
真的是一切都緩衝到最後,或者如果我有一個很長的頁面,頁面是否會以大塊的形式出現? – zedoo 2010-05-14 07:02:38
@zedoo如果你用'ob_start()'開始輸出緩衝,*真的是所有的東西都被緩衝了。 'ob_start()','int $ chunk_size'有一個可選的第二個參數,如果設置了這個參數,將導致在任何輸出調用導致緩衝區的長度等於或超過這個大小後刷新緩衝區。 – 2010-05-14 07:24:26