2017-02-16 95 views
1

我知道那些與輸出緩衝方法:ob_get_length()方法的用途是什麼?

<?php 
ob_start(); 

// some code 

ob_end_flush(); 
ob_end_clean(); 

,但我想不出爲什麼將我需要的輸出緩衝區的長度。這裏有一個關於測量用戶帶寬的SOF問題,雖然這個計算需要測量未被解決的圖片和其他文件。

我沒有檢查PHP手冊和「爲什麼」不存在。

回答

1

回答「爲什麼要使用它」。爲了回答這個問題,我們必須首先明白爲什麼我們需要使用ob_start。 通常它被用於兩個目的:

  1. 當我們要發送的HTTP頭信息,但我們不能確定,這之前沒有渲染(第一輸出將觸發頭髮送,因此,如果您使用,echo例如,在header之前,後者將不起作用)
  2. 當我們想通過塊發送我們的輸出以獲得性能時。所以,現在(你的代碼可以有很多的echoprint寫入,通常他們outputing只有很小的數據,所以你要發送的數據的一小部分返回到瀏覽器,這是影響性能。)

可以開始猜測,爲什麼我們需要使用ob_get_length()。例如:我想發送我的輸出大塊,所以我啓用輸出緩衝,並在ob_get_length的幫助下,我可以控制多少數據我可以寫入緩衝區,然後再發送它。

+0

偉大的答案謝謝 – docesam

0

ob_get_length將返回的輸出緩衝區中的內容的長度..

下面是簡單的例子..

<?php 

ob_start(); 

echo "Hello "; 

$len1 = ob_get_length(); 

echo "World"; 

$len2 = ob_get_length(); 

ob_end_clean(); 

echo $len1 . ", ." . $len2; 
?> 

上面的示例將輸出:6, 11

更新: 如果你想發送一個自定義的HTTP Content-Length頭部,ob_get_length()會很有幫助 - 儘管這隻適用於高級用戶!

+0

問題是:爲什麼我需要這個信息? – docesam

+0

如果你想發送一個自定義的HTTP Content-Length頭,ob_get_length()會很有幫助 - 儘管這隻適用於高級用戶! –