ob_flush
उपयोग करने के लिए नहीं करना चाहती बफर लिखता है। दूसरे शब्दों में, ob_flush
PHP को अपाचे (या nginx/lighttpd/जो कुछ भी) आउटपुट देने के लिए बताता है और उसके बाद PHP को इसके बारे में भूल जाता है। एक बार अपाचे के आउटपुट होने के बाद, यह जो कुछ भी चाहता है वह करता है। (दूसरे शब्दों में, ob_flush
के बाद यह आपके नियंत्रण से बाहर है या नहीं, यह तुरंत ब्राउज़र पर लिखा जाता है)।
तो, संक्षिप्त उत्तर: ऐसा करने के लिए कोई गारंटीकृत तरीका नहीं है।
बस एक अनुमान है, आप शायद AJAX की तलाश कर रहे हैं। जब भी लोग आपके द्वारा किए जा रहे पृष्ठ सामग्री लोड करते समय हेरफेर करने की कोशिश कर रहे हैं, तो AJAX लगभग हमेशा सही पथ है।
यदि आप पृष्ठभूमि में कोई कार्य जारी रखना चाहते हैं, तो आप विस्तृत here के रूप में ignore_user_abort
का उपयोग कर सकते हैं, हालांकि, यह अक्सर इष्टतम दृष्टिकोण नहीं है। आप अनिवार्य रूप से उस धागे पर नियंत्रण खो देते हैं, और मेरी राय में, एक वेब सर्वर धागा नहीं है जहां भारी प्रसंस्करण संबंधित है।
मैं इसे वेब चेहरे से बाहर निकालने का प्रयास करूंगा। इसका मतलब क्रॉन एंट्री या PHP के अंदर से पृष्ठभूमि प्रक्रिया को उत्पन्न करना हो सकता है (एक प्रक्रिया जो स्क्रिप्ट निष्पादन के अंदर से शुरू होती है, स्क्रिप्ट के साथ मर नहीं जाएगी, और स्क्रिप्ट मरने से पहले खत्म होने की प्रतीक्षा नहीं करेगा)।
यदि आप उस मार्ग पर जाते हैं, तो इसका मतलब यह होगा कि यदि आवश्यक हो तो आप किसी प्रकार की स्थिति प्रणाली भी बना सकते हैं। फिर आप निष्पादन की निगरानी कर सकते हैं और प्रगति पर उपयोगकर्ता आवधिक अपडेट दे सकते हैं। (तकनीकी रूप से आप ignore_user_abort
-ed स्क्रिप्ट के साथ एक स्टेटस सिस्टम भी बना सकते हैं, लेकिन यह मेरे लिए साफ नहीं लगता है।)
पहले ob_flush करने के बाद, क्या आप अन्य आउटपुट दिखाना चाहते हैं? या क्या आप चाहते हैं कि ग्राहक पूरी तरह से पूरा होने तक अनुरोध कर सके और फिर पृष्ठभूमि में कुछ प्रकार की प्रसंस्करण जारी रहे? – Corbin
पृष्ठभूमि में जारी रखें – aWebDeveloper
ठीक है, मेरे उत्तर को अपडेट किया है। – Corbin