注意我並不是想解決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_get_contents