国产黄色免费网站,人人干人人干人人干,免费大黄网站在线看,国产情侣一区二区三区,99精品国产福利免费一区二区,国产亚洲成归v人片在线观看,伊人88

2023信創(chuàng)獨角獸企業(yè)100強
全世界各行各業(yè)聯(lián)合起來,internet一定要實現(xiàn)!

PHP下對緩沖區(qū)的控制

2004-02-11 eNet&Ciweek

  PHP4.0 提供了一個輸出緩沖函數(shù)集合。輸出緩沖支持允許你寫包裹函數(shù)功能壓縮緩沖區(qū)。在 PHP4 的輸出緩沖支持允許 HTML 頭信息存放, 無論 HTML的正文是否輸出。但在PHP中,頭信息( (header(), content type, and cookies )不采用緩沖 。   

  在使用PHP的過程中不免要使用到header和setcookie兩個函數(shù),這兩個函數(shù)會發(fā)送一段文件頭信息給瀏覽器,但是如果在使用這兩個函數(shù)之前已經有了任何輸出(包括空輸出,比如空格,回車和換行)就會提示出錯,提示信息如下:“Header had all ready send by”!。在PHP 4.0里面加入了緩沖區(qū)控制的幾個函數(shù),使用這些函數(shù)可以幫我們解決很多問題。  

  函數(shù)名稱 函數(shù)格式 功能 說明

  Flush flush() 輸出緩沖區(qū)內的內容并且刪除緩沖區(qū)。 這個函數(shù)經常使用,效率很高。

  ob_start void ob_start(void) 打開輸出緩沖區(qū)。 當緩沖區(qū)激活時,所有來自PHP程序的非文件頭信息均不會發(fā)送,而是保存在內部緩沖區(qū)。為了輸出緩沖區(qū)的內容,可以使用ob_end_flush()或者使用ob_end_clean()來輸出緩沖區(qū)的內容。

  ob_get_contents string ob_get_contents(void) 返回內部緩沖區(qū)的內容。 這個函數(shù)會返回當前緩沖區(qū)中的內容,如果輸出緩沖區(qū)沒有激活,則返回 FALSE 。

  ob_get_length int ob_get_length(void) 返回內部緩沖區(qū)的長度。 這個函數(shù)會返回當前緩沖區(qū)中的長度;和ob_get_contents一樣,如果輸出緩沖區(qū)沒有激活。則返回 FALSE。

  ob_end_flush void ob_end_flush(void) 發(fā)送內部緩沖區(qū)的內容到瀏覽器,并且關閉輸出緩沖區(qū)。 這個函數(shù)發(fā)送輸出緩沖區(qū)的內容(如果有的話)。

  ob_end_clean void ob_end_clean(void) 刪除內部緩沖區(qū)的內容,并且關閉內部緩沖區(qū)。 這個函數(shù)不會輸出內部緩沖區(qū)的內容!

  ob_implicit_flush void ob_implicit_flush ([int flag]) 打開或關閉絕對刷新 使用過Perl的人都知道$ =x的意義,這個字符串可以打開/關閉緩沖區(qū),而ob_implicit_flush函數(shù)也和那個一樣,默認為關閉緩沖區(qū),打開絕對輸出。

  二、實例分析:   

  1、用緩沖區(qū)控制的函數(shù)防止文件頭發(fā)送信息出錯。   

  
  ob_start(); //打開緩沖區(qū)

  echo "Welcome /n"; //輸出

  header("location:next.php"); //把瀏覽器重定向到next.php

  ?>

  如果去掉ob_start,PHP就會提示在文件的第4行出錯,出錯信息為“Header had all ready send by”,但是加上ob_start,就不會提示出錯,原因是當打開了緩沖區(qū),echo后面的字符不會輸出到瀏覽器,而是保留在服務器的緩沖區(qū)中,直到你使用flush或者ob_end_flush才會輸出,所以并不會出現(xiàn)文件頭已輸出的錯誤!

  2、保存輸出(這是一個很經典的用途)。

  假如你想知道客戶端的屏幕輸出信息像函數(shù)的輸出結果等,而且這個輸出信息會因客戶端的不同而不同。我們可以用函數(shù) 得到服務器的設置信息,但是如果想要保存phpinfo()函數(shù)的輸出怎么辦呢?在沒有緩沖區(qū)控制之前,可以說一點辦法也沒有,但是有了緩沖區(qū)的控制,我們可以輕松的解決。

  
   ob_start(); //打開緩沖區(qū)

   phpinfo(); //使用phpinfo函數(shù)

   $info=ob_get_contents(); //得到緩沖區(qū)的內容并且賦值給$info

   $file=fopen('phpinfo.txt','w'); //打開文件phpinfo.txt

   fwrite($file,$info); //寫入信息到phpinfo.txt

   fclose($file); //關閉文件phpinfo.txt

  ?>

  用以上的方法,就可以把不同用戶的phpinfo信息保存下來,這在以前恐怕沒有辦法辦到!同樣,用緩沖區(qū)的方法可以保存一般方法難以完成的任務,這其實上就是將一些“過程”轉化為“函數(shù)”的方法。

相關頻道: eNews

您對本文或本站有任何意見,請在下方提交,謝謝!

投稿信箱:tougao@enet16.com