深入php ob_start的用法詳解
所有對header()函數有了解的人都知道,這個函數會傳送一段檔案頭給瀏覽器,但是如果在使用這個函數之前已經有了任何輸出(包括空輸出,例如空格,回車和換行)就會提示出錯。如果我們去掉第一行的ob_start(),再執行此程序,我們會發現得到了一條錯誤提示:"Header had all ready send by"!但加上ob_start,就不會提示出錯,原因是當開啟了緩衝區,echo後面的字元不會輸出到瀏覽器,而是保留在伺服器,直到你使用flush或ob_end_flush才會輸出,所以並不會有任何文件頭輸出的錯誤! 一、 相關函數簡介: 1、Flush:刷新緩衝區的內容,輸出。 函數格式:flush() 說明:這個函數經常使用,效率很高。 2、ob_start :開啟輸出緩衝區 函數格式:void ob_start(void) 說明:當緩衝區啟動時,所有來自PHP程式的非檔案頭資訊均不會傳送,而是保存在內部緩衝區。為了輸出緩衝區的內容,可以使用ob_end_flush()或flush()輸出緩衝區的內容。 3 、ob_get_contents :傳回內部緩衝區的內容。 使用方法:string ob_get_contents(void) 說明:這個函數會傳回目前緩衝區中的內容,如果輸出緩衝區沒有激活,則傳回 FALSE 。 4、ob_get_length:傳回內部緩衝區的長度。 使用方法:int ob_get_length(void) 說明:這個函數會傳回目前緩衝區中的長度;和ob_get_contents一樣,如果輸出緩衝區沒有啟動。則回傳 FALSE。 5、ob_end_flush :傳送內部緩衝區的內容到瀏覽器,並且關閉輸出緩衝區。 使用方法:void ob_end_flush(void) 說明:這個函數會傳送輸出緩衝區的內容(如果有的話)。 6、ob_end_clean:刪除內部緩衝區的內容,並且關閉內部緩衝區 使用方法:void ob_end_clean(void) 說明:這個函數不會輸出內部緩衝區的內容而是刪除它! 7、ob_implicit_flush:開啟或關閉絕對刷新 使用方法:void ob_implicit_flush ([int flag]) 說明:使用過Perl的人都知道$|=x的意義,這個字串可以打開/關閉緩衝區,而ob_implicit_flush函數也和那個一樣,預設為關閉緩衝區,打開絕對輸出後,每個腳本輸出都直接傳送到瀏覽器,不再需要呼叫flush() 二、深入了解: 1. 關於Flush函數: 這個函數在PHP3就出現了,是一個效率很高的函數,他有一個非常有用的功能就是刷新browser的cache.我們舉一個運行效果非常明顯的例子來說明flush. 例子 2.
註:如果在程式的首部加入ob_implicit_flush()開啟絕對刷新,就可以在程式中不再使用flush(),這樣做的好處是:提高效率! 2. 關於ob系列函數: 我想先引用我的好朋友y10k的一個例子: 例子 3. 例如你用得到伺服器和客戶端的設定訊息,但是這個資訊會因為客戶端的不同而不同,如果想要保存phpinfo()函數的輸出怎麼辦呢?在沒有緩衝區控制之前,可以說一點辦法也沒有,但是有了緩衝區的控制,我們可以輕鬆的解決:
用以上的方法,就可以把不同使用者的phpinfo資訊保存下來,這在以前恐怕沒有辦法辦到!其實上面就是將一些"過程"轉換為"函數"的方法! 或許有人會問:"難道就這個樣子嗎?還有沒有其他用途?"當然有了,比如筆者論壇的PHP 語法加亮顯示就和這個有關(PHP預設的語法加亮顯示函數會直接輸出,不能儲存結果,如果在每次呼叫都顯示恐怕會很浪費CPU,筆者的論壇就把語法加亮函數顯示的結果用控制緩衝區的方法保留了),大家如果感興趣的話可以來看看 可能現在大家對ob_start()的功能有了一定的了解,上面的一個例子看似簡單,但實際上已經掌握了使用ob_start()的要點。 .使用ob_start開啟browser的cache,這樣可以確保cache的內容在你呼叫flush(),ob_end_flush()(或程式執行完畢)之前不會被輸出。 .現在的你應該知道你所擁有的優點:可以在任何輸出內容後面使用header,setcookie以及session,這是ob_start一個很大的特點;也可以使用ob_start的參數,在cache被寫入後,然後自動執行指令,例如ob_start("ob_gzhandler");而我們最常用的做法是用ob_get_contents()得到cache中的內容,然後再處理… .當處理完畢後,我們可以使用各種方法輸出,flush(),ob_end_flush(),以及等到程式執行完畢後的自動輸出。當然,如果你用的是ob_get_contents(),那麼就要你自己控制輸出方式了。 一、 靜態模版技術 簡介:所謂靜態模版技術就是透過某種方式,使得使用者在client端得到的是由PHP產生的html頁面。如果這個html頁面不會再更新,那麼當另外的使用者再次瀏覽此頁面時,程式將不會再呼叫PHP以及相關的資料庫,對於某些資訊量比較大的網站,例如sina,163,sohu。類似這種的技術帶來的好處是非常巨大的。 1 2 下一頁 尾頁 |

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

會話劫持可以通過以下步驟實現:1.獲取會話ID,2.使用會話ID,3.保持會話活躍。在PHP中防範會話劫持的方法包括:1.使用session_regenerate_id()函數重新生成會話ID,2.通過數據庫存儲會話數據,3.確保所有會話數據通過HTTPS傳輸。

PHP8.1中的枚舉功能通過定義命名常量增強了代碼的清晰度和類型安全性。 1)枚舉可以是整數、字符串或對象,提高了代碼可讀性和類型安全性。 2)枚舉基於類,支持面向對象特性,如遍歷和反射。 3)枚舉可用於比較和賦值,確保類型安全。 4)枚舉支持添加方法,實現複雜邏輯。 5)嚴格類型檢查和錯誤處理可避免常見錯誤。 6)枚舉減少魔法值,提升可維護性,但需注意性能優化。

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

在PHPStorm中如何進行CLI模式的調試?在使用PHPStorm進行開發時,有時我們需要在命令行界面(CLI)模式下調試PHP�...

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...
