php有沒有辦法偵測出程式運行到此處之前有無輸出?

WBOY
發布: 2016-10-10 11:56:08
原創
1202 人瀏覽過

注意我並不是想解決header()的問題,只是程式中有一個功能有這個需求。
反之,我倒是想過是不是可以透過發個header來檢測,或是set個cookie(一個道理)。但是據說php有個output_buffering機制,搞得這條路又行不通了。因為把這個機制殘忍地關閉可能會導致一些其它不可預期的問題,而且不是所有環境都能關閉的。
就算行得通,但cookie總是慢一拍,不能set完馬上取得到。發個header又會導致沒用的東西摻雜在http頭中。

那。 。 。

有什麼辦法達到這個需求呢?

(我並不想修改程式其他部分的程式碼)

回覆內容:

注意我並不是想解決header()的問題,只是程式中有一個功能有這個需求。
反之,我倒是想過是不是可以透過發個header來檢測,或是set個cookie(一個道理)。但是據說php有個output_buffering機制,搞得這條路又行不通了。因為把這個機制殘忍地關閉可能會導致一些其它不可預期的問題,而且不是所有環境都能關閉的。
就算行得通,但cookie總是慢一拍,不能set完馬上取得到。發個header又會導致沒用的東西摻雜在http頭中。

那。 。 。

有什麼辦法達到這個需求呢?

(我並不想修改程式其他部分的程式碼)

使用 headers_sent() 判斷頭是否發出是否可以滿足你的需求?的如果已經輸出內容了,headers 肯定已經發送過了。

php的輸出機制並不是使用完了echo 之類的指令就會立即輸出的,而是先將這部分內容放到一個緩衝區裡區。 (所謂緩衝區就是一塊共享記憶體),等記憶體滿了或腳本結束的時候,php才會將這塊記憶體交付給nginx或apache來輸出。
因此,要實現你的需求,只需要判斷緩衝區裡有沒有內容。
php提供了我們這樣的函數,即
ob_g​​et_contents

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板