2012-12-16 12 views
10

मेरी वेबसाइट (ड्रूपल के साथ चल रहा है) में ob_flush फ़ंक्शन निष्पादित होने में लंबा समय (10 से 100 सेकेंड के बीच) लगता है। मैं कैसे पता लगा सकता हूं क्यों? इतना लंबा समय क्या हो सकता है? enter image description hereob_flush को निष्पादित करने में लंबा समय लगता है

+0

आपको क्या लगता है कि यह फ़ंक्शन आपके एप्लिकेशन को फ्रीज करता है? – ualinker

+0

@ualinker कृपया जिस छवि को मैंने अभी अपलोड किया है उसे देखें – user16948

+0

क्या आप कृपया 'ob_start() 'और' ob_flush() 'संदर्भ के साथ कोड पेस्ट कर सकते हैं? – ualinker

उत्तर

0

उपयोग

<?ob_start();?> 

पेज की शुरुआत में और

<?ob_flush();?> 
पृष्ठ के अंत में

, इस समस्या को हल करने के लिए।

0

सेट

output_buffering = Off

php.ini

2

में इस प्रयास करें:

ob_start(); 
//Your code to generate the output 
$result = ob_get_contents(); //save the contents of output buffer to a string 
ob_end_clean(); 
echo $result; 

यह मेरे लिए त्वरित चलाया जाता है।

0

[आप अपने प्रश्न को ड्रूपल के साथ टैग करना चाहते हैं, क्योंकि ऐसा लगता है कि यह एक ड्रूपल मुद्दा हो सकता है। विशेष रूप से, मुझे संदेह है कि जब आप बफर को फ्लश करते हैं, तो आप बाहरी बफर को लिख रहे हैं, जो आपके द्वारा लिखे गए डेटा को फ़िल्टर करने के लिए हुक के एक टन को ट्रिगर करता है।]

मुझे संदेह है कि आपकी समस्या है नेस्टेड बफर Drupal वास्तव में जगह पर सब कुछ बफर और बफर पसंद करता है। के परिणाम की जांच:

echo "<pre>\nBuffering level: "; 
    . ob_get_level() . 
    . "\nBuffer status:\n" 
    . var_dump(ob_get_status(TRUE)) 
    . "\n</pre>"; 

यदि आपने नेस्टेड बफ़र्स, तो मुझे लगता है ob_flush() आप के लिए कोई कार्य नहीं करेगा: यह सिर्फ बफरिंग के अगले सबसे बाहरी परत में अपने भीतर के बफर की सामग्री को जोड़ देता है।

नेस्टेड बफर ड्रूपल से ही आ सकते हैं (जो ऊपर दिखाएगा), या zlib-output-compression और output_buffering के लिए सेटिंग्स से (उनको twiddling करने का प्रयास करें, देखें कि यह कुछ भी बदलता है)।

अपने बफ़र्स नहीं लगाए गए हैं, तो और इसके बाद के संस्करण सेटिंग्स में मदद नहीं करते हैं, तो आप भी वहाँ टुकड़ों में विभाजित करने के लिए आपरेशन, और चलाने के प्रोफाइलर, देखने के लिए कौन-सा हिस्सा समय लगा रही है चाहते हो सकता है:

$data = ob_get_contents(); // Return the contents of the output buffer. 
ob_clean(); // Clean (erase) the output buffer. 
ob_end(); // Close the buffer. 
echo($data); // Output our data - only works if there's no outer buffer! 
ob_start(); // Start our buffer again. 

सवाल तब होता है, "आप क्या हासिल करने की कोशिश कर रहे हैं?" आपको क्या लगता है ob_flush() यहाँ कर रहा है? क्योंकि अगर जवाब है "मैं अब तक जो कुछ भी कर चुका हूं उसे ब्राउजर पर धक्का देना चाहता हूं" ... तो मुझे डर है कि ob_flush() सिर्फ सही तरीका नहीं है।

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

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