2009-09-01 14 views
10

मेरे पास एक php स्क्रिप्ट है जो डेटा प्राप्त करने के लिए 10 अलग-अलग सर्वर जोड़ती है। मैं चाहता हूं कि दूसरे कनेक्शन से पहले 1 कनेक्शन के परिणाम प्रिंट करें।प्रिंटिंग परिणाम तुरंत (php)

+0

कृपया विस्तृत करें और –

उत्तर

23

flush और/या ob_flush का उपयोग करके, आपको जो चाहिए वह प्राप्त करना चाहिए।

for ($i=0 ; $i<10 ; $i++) { 
    echo "$i<br />"; 
    ob_flush(); 
    flush(); 
    sleep(1); 
} 

प्रत्येक दूसरे, एक नंबर पाश/लिपि समाप्त करने के लिए इंतजार किए बिना, ब्राउज़र को भेज दिया जाएगा:

यहाँ एक त्वरित प्रदर्शन है।
(दोनों फ्लश और ob_flush के बिना, यह स्क्रिप्ट के अंत तक इंतजार कर रहा है उत्पादन भेजने के लिए) के बारे में क्यों तुम दोनों की जरूरत है, के मैनुअल में फ्लश पेज से उद्धृत


स्पष्टीकरण:

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

फ्लश() अपने वेब सर्वर बफरिंग योजना ओवरराइड करने के लिए सक्षम नहीं हो सकता है और यह ब्राउज़र में किसी भी क्लाइंट साइड बफरिंग पर कोई प्रभाव नहीं है। यह PHP के उपयोगकर्ता स्थान आउटपुट बफरिंग तंत्र को भी प्रभावित नहीं करता है। इसका अर्थ है यदि आप उन का उपयोग कर रहे हैं तो आपको ओब आउटपुट बफर को फ्लश करने के लिए ob_flush() और फ्लश() दोनों को कॉल करना होगा।


इस हैं, तो आप के लिए काम नहीं करता है मैनुअल के दो पृष्ठों पर टिप्पणियाँ पर एक नज़र डालने आप के लिए संकेतों के के एक जोड़े को दे सकते हैं "यह क्यों विफल हो सकता है"

+0

@sshow का उपयोग कर रहे कोड का एक उदाहरण दें: मैंने सुना है कि इस सवाल ने सहकर्मियों द्वारा, काम पर, वास्तव में - और इसे एक या दो बार इस्तेमाल किया - इससे मदद मिली ^^ –

+0

धन्यवाद, महान जवाब! बहुत मदद की –

2

ob_end_flush http://us.php.net/ob_end_flush

इस समारोह उत्पादन बफर खाली और अक्षम कर देता है उत्पादन बफरिंग। इस फ़ंक्शन के बाद सब कुछ तुरंत ब्राउज़र पर भेज दिया जाता है।

0

हाँ, ob_flush इसे करना चाहिए। मैं इसे लूंग पेज के साथ हर समय करता हूं, जब मैं ऑपरेशन की प्रगति देखना चाहता हूं।

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