2010-06-24 9 views
10

शीर्षक आत्म-व्याख्यात्मक है।हेडर PHP में आउटपुट बफरिंग के साथ कैसे काम करते हैं?

मेरे पास PHP के साथ थोड़ा सा अनुभव है, लेकिन मुझे यकीन नहीं है कि header फ़ंक्शन ob_start() और ob_end_clean() के बीच कैसे काम करता है।

इस पर विचार करें:

ob_start(); 

echo "Some content"; 
header('X-Example-Header: foo'); 
echo "Some more content"; 

$output = ob_get_contents(); 
ob_end_clean(); 

echo $output; 

header समारोह की अनदेखी करता है उत्पादन बफरिंग, और इस प्रकार सभी हेडर सामग्री से पहले भेजा है क्योंकि यह echo एड header कॉल के बाद है?

या यह किसी अन्य तरीके से काम करता है?

+1

* (संदर्भ) * ['ob_start'] (http://de2.php.net/manual/en/function.ob-start.php) - यह फ़ंक्शन आउटपुट बफरिंग चालू कर देगा। जबकि आउटपुट बफरिंग सक्रिय है, स्क्रिप्ट ** (हेडर के अलावा) ** से कोई आउटपुट नहीं भेजा जाता है, इसके बजाय आउटपुट को आंतरिक बफर में संग्रहीत किया जाता है। – Gordon

+0

ओह, हे, मुझे याद आया। मुझे थोड़ा करीब पढ़ने के लिए सिखाया जाना चाहिए। धन्यवाद, गॉर्डन। –

उत्तर

14

header() वास्तव में आउटपुट बफरिंग को अनदेखा करता है। आउटपुट बफरिंग का उपयोग करने के कारण का एक हिस्सा है ताकि आप HTTP हेडर को ऑर्डर से बाहर भेज सकें क्योंकि प्रतिक्रिया buffered है। एक बार जब आप किसी भी प्रकार का आउटपुट भेजते हैं तो आप HTTP शीर्षलेख नहीं भेज सकते (जब तक कि आउटपुट बफर नहीं किया जाता)।

संबंधित मुद्दे