2010-05-14 210 views

回答

218

Output Buffering for Web Developers, a Beginner’s Guide

沒有輸出緩衝(默認值),作爲PHP處理通過腳本的HTML被髮送到片瀏覽器。通過輸出緩衝,您的HTML存儲在一個變量中,並作爲腳本末尾的一部分發送到瀏覽器。

對於Web開發人員

  • 單獨打開輸出緩衝優勢輸出緩衝的減少所花費的時間來下載和渲染我們的HTML,因爲它沒有被髮送到瀏覽器中的片段作爲PHP處理HTML量。
  • 我們可以用PHP字符串做的所有花哨的東西,我們現在可以將整個HTML頁面作爲一個變量來完成。
  • 如果您在設置Cookie時遇到了「警告:無法修改標題信息 - 已由(輸出)發送的標題」消息,您將很高興知道輸出緩衝是您的答案。
+3

+1。這裏有另一個有用的鏈接:http://php.net/manual/en/function.ob-start.php - 當處理一個函數時,它也很有幫助,這個函數可以回顯你希望存儲在變量中的值。 – Cam 2010-05-14 06:21:59

+0

真的是一切都緩衝到最後,或者如果我有一個很長的頁面,頁面是否會以大塊的形式出現? – zedoo 2010-05-14 07:02:38

+4

@zedoo如果你用'ob_start()'開始輸出緩衝,*真的是所有的東西都被緩衝了。 'ob_start()','int $ chunk_size'有一個可選的第二個參數,如果設置了這個參數,將導致在任何輸出調用導致緩衝區的長度等於或超過這個大小後刷新緩衝區。 – 2010-05-14 07:24:26

7

輸出控制函數允許當輸出從 腳本發送你 控制。這可以在 幾種不同的情況下有用, 特別是如果你需要在 開始輸出數據後發送標題 到瀏覽器。輸出 控制功能不會影響 使用header()或 setcookie()發送的報頭,只能使用 echo()和PHP 數據塊之間的數據代碼。

http://php.net/manual/en/book.outcontrol.php

更多資源:

Output Buffering With PHP

48

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); 
    } 
?> 
+0

這裏和Ax相同的問題:沒有啓動輸出緩衝而沒有稍後關閉它,會讓你的腳本遇到各種問題? – 2012-09-24 21:28:52

+1

當您調用其中一種刷新方法(例如'ob_flush()'或'ob_end_flush()')時,刷新緩衝區。當腳本結束時,緩衝區的內容也會被刷新,突然或以其他方式,所以不應該有問題。 – 2012-09-25 06:09:51

4

正如名字在這裏建議使用的內存緩衝區管理腳本輸出的顯示方式。

這裏是一個very good tutorial爲主題