दिलचस्प पोस्ट
नकल उपयोगकर्ता इनपुट के साथ JUnit परीक्षण फेसबुक की हैश किसी भी संग्रहीत कुंजी हैश से मेल नहीं खाती ईसीएमएस्क्रिप्ट 6 का उपयोग करना जावास्क्रिप्ट, jquery-ajax का उपयोग करके <input type = 'file'> के बदलने पर चयनित फ़ाइल का पूरा रास्ता कैसे प्राप्त करें? क्यों StyleCop "यह" के साथ विधि या गुण कॉल prefixing सिफारिश करता है? jQuery .live () बनाम .on () गतिशील HTML को लोड करने के बाद क्लिक ईवेंट को जोड़ने के लिए विधि ओपनसीवी मल्टी चैनल एलीमेंट एक्सेस एमवीसी 3 रेज़र ड्रॉपडाउन लिस्टफोर एनोम निजी अंतिम स्थिर विशेषता बनाम निजी अंतिम विशेषता मैं इस preg_match केस को असंवेदनशील कैसे बना सकता हूं? एन्जिल जेएस में और बनाम @ और = के बीच का अंतर क्या है जावा 8: दो स्थानीय डेटटाइम के बीच अंतर की गणना करें एडीओ। नेट ईएफ – मॉडल के पहले दृष्टिकोण में विदेशी कुंजी संबंध को परिभाषित करने के लिए कैसे? Git के लिए सबसे अच्छा दृश्य मर्ज टूल क्या है? सी # में सिंगलटन क्या है?

PHP बफर ob_flush () बनाम फ्लश ()

ob_flush() और flush() में अंतर क्या है और मुझे दोनों क्यों कॉल करना चाहिए?

ob_flush() संदर्भ कहते हैं:

यह फ़ंक्शन आउटपुट बफर की सामग्री (यदि कोई है) भेजेगा।

flush() संदर्भ कहते हैं:

PHP के लिखने बफ़र्स और जो भी बैकएंड पीएचपी (सीजीआई, एक वेब सर्वर, आदि) का उपयोग कर रहा है, उसे फ्लश करता है।

हालांकि, यह कहना जारी है:

[यह] आपके वेब सर्वर की बफरिंग स्कीम को ओवरराइड करने में सक्षम नहीं हो …

इसलिए, मुझे लगता है कि मैं सिर्फ ob_flush() सभी समय का उपयोग कर सकता था हालांकि, जब मैं ऐसा करता हूं तो मुझे अजीब परिणाम मिलते हैं I क्या कोई सरल शब्दों में समझा सकता है कि यहां क्या हो रहा है?

वेब के समाधान से एकत्रित समाधान "PHP बफर ob_flush () बनाम फ्लश ()"

ob_flush एक अनुप्रयोग-शुरू बफर भेजता है। किसी भी PHP स्क्रिप्ट में एकाधिक नेस्टेड ob_start() हो सकते हैं ob_flush वर्तमान सामग्री को ऊपरी परत से गुजरता है

खुद PHP (अपने विवेक पर) बफर आउटपुट हो सकता है यह बैक-एंड पर निर्भर करता है लेकिन आमतौर पर FastCGI पास FastCGI बफर होता है इसलिए वर्तमान सामग्री को वेब सर्वर पर भेजने के लिए flush() को लागू करने की आवश्यकता है

और अब वेब सर्वर एक और बफरिंग योजना ( mod_deflate या content filter) को लागू कर सकता है, जिस पर आपके पास कोई प्रभाव नहीं है। लेकिन यह शायद ही कभी है, क्योंकि इसे विशेष रूप से कॉन्फ़िगर करने की आवश्यकता है।

फिर भी, दोनों का उपयोग करें

ob_flush आउटपुट बफ़र्स जो आपने ob_start जैसी फ़ंक्शन के साथ बनाया है

flush अपने कॉलर को पीएचपी लिपि का उत्पादन buffered

ob_flush() एक उच्च स्तरीय फ्लश है। यह उच्च स्तरीय बफ़र्स flushes और सभी सामग्री को भेजने के लिए तैयार निम्न स्तर, आंतरिक buffers में डालता है।

  • ध्यान दें कि कार्यों के ob_ परिवार बफ़र्स के ढेर बनाते हैं, इसलिए हर जगह वास्तव में ob_flush() लिखते ob_flush() आपको "अजीब परिणाम" दे रहा है यदि कोड को इस स्टैकिंग का लाभ लेने के लिए लिखा गया था।

flush() एक निम्न-स्तर के फ्लश है, जो PHP को अपने आंतरिक, निम्न स्तर के डेटा बफ़र्स को फ्लश करने के लिए निर्देश देता है

अभी भी नीचे, सॉकेट-लेयर बफ़र्स होंगे; उसके नीचे, नेटवर्क-परत बफ़र्स हैं और, निम्नतम स्तर पर, डेटा केबल नीचे जाने वाले इलेक्ट्रॉनों की कतार

मुझे लगता है कि यह आपके पिछले प्रश्न के संबंध में है आउटपुट बफ़रिंग का उपयोग करने का महत्वपूर्ण लाभ होता है जब डेटा संपीड़न के साथ इसका उपयोग किया जाता है। यदि आप ob_gzhandler का उपयोग नहीं कर रहे हैं, तो लाभ प्राप्त करने के लिए बहुत कम है। अकेले flush ही होगा जो आउटपुट डेटा सर्वर पर अभी भी है। ob_start और उसके समकक्ष ob_flush , ob_end_clean और ob_end_flush , जो कुछ भी संकुचित होने की प्रतीक्षा कर रहा है ( flush और अलग-अलग बाल्टी के संदर्भ में ob_flush ob flush लिए डेटा भेजता है, flush ब्राउज़र को डेटा भेजता है – सटीक नहीं हो सकता है लेकिन यह विचार है) ऊपर लपेटा जाएगा और क्लाइंट को भेजा जाएगा।