2010-06-20 12 views
5

मैं PHP को कुछ पाठ आउटपुट करना चाहता हूं, फिर साढ़े सालों तक सो जाओ, और उसके बाद कुछ और टेक्स्ट आउटपुट करें। के बाद उन 1.5 सेकंड प्रतीक्षा की हो रही है -नींद से पहले पीएचपी आउटपुट टेक्स्ट

<?php 

echo 'Output one.'; 

usleep(1500000); 

echo 'Output two.'; 

?> 

मेरे समस्या यह है कि सभी पाठ एक साथ बाहर कर दिया जा रहा है। मैंने फ्लश नामक फ़ंक्शन के बारे में कुछ पढ़ा है - लेकिन ऐसा लगता है कि यह काम नहीं करता है। शायद मैं इसे लिखने का उपयोग नहीं कर रहा हूँ। किसी भी मदद की सराहना की जाएगी ^^

अग्रिम धन्यवाद!

उत्तर

8

जांच यह पता

<?php 

ob_start(); 

echo 'Output one.'; 
ob_flush(); 
usleep(1500000); 
echo 'Output two.'; 
ob_flush(); 

?> 
+0

यह मेरे लिए काम नहीं किया है, लेकिन मैं 'फ्लश() जोड़ा गया;' हर 'ob_flush के बाद();' तो यह काम किया। क्या कोई कृपया बता सकता है कि मुझे 'फ्लश' क्यों करना है? – Salam

1

जबकि Pentium10 के समाधान काम शायद करेंगे, तो आप ग्राहक के पक्ष को यह ले जाने पर विचार कर सकते हैं। पहले मान प्राप्त करने के लिए एसिंक कॉल करें, इसे प्रिंट करें, आवश्यक समय के लिए सोएं और फिर दूसरे मान के लिए दोहराएं।

2

मुझे लगता है कि यह एक http अनुरोध/प्रतिक्रिया समस्या है। कमांड लाइन पर आपकी स्क्रिप्ट ठीक काम करती है।

आम तौर पर प्रतिक्रिया पूरी तरह से तैयार की जाती है और ग्राहक को भेजती है। यदि आपकी प्रतिक्रिया में ऐसा आकार है कि एकाधिक टीसीपी पैकेज भेजना है, तो यह हो सकता है कि स्क्रिप्ट प्रोसेसिंग के साथ तैयार होने से पहले, पहले पैकेज भेज दिए जाएंगे। तो यह आउटपुट के आकार पर निर्भर करता है। ग्राहक/वेब ब्राउज़र के आधार पर, यह भी हो सकता है कि क्लाइंट पर पूर्ण प्रतिक्रिया आने से पहले, पहले पैकेज प्रस्तुत किए जाएंगे।

Noufal Ibrahim ने उत्तर टाइप करते समय उत्तर दिया, मैं पूरी तरह से उससे सहमत हूं। इसे एक asynchrone तरीके से करो।

4

पेंटियम 10 का जवाब मेरे लिए काफी काम नहीं करता .. हालांकि जब मैं PHP दस्तावेज़ पृष्ठ पर गया, तो वहां बहुत अच्छी टिप्पणियां थीं।

http://php.net/manual/en/function.ob-flush.php

इस के लिए मुझे फ़ायरफ़ॉक्स 3.5.9, पीएचपी 5.2.11 का उपयोग कर, अपाचे स्थानीय विंडोज 7 लैपटॉप बंद चल रहा है काम:

echo "test"; 
ob_end_flush(); 
flush(); 
usleep(x); 
echo "test"; 

ob_end_flush() भेजा डेटा प्राप्त करने के लिए महत्वपूर्ण था।

+0

धन्यवाद, काम किया! –

-1
echo 'Output one.'; 
ob_flush(); 
flush(); 
usleep(1500000); 
echo 'Output two.'; 
0

आपकी समस्या यह है कि इस पीएचपी है। यह एक पूर्व प्रोसेसर है। तो PHP स्क्रिप्ट चलाता है, पहले लॉग आउटपुट करता है, फिर सोता है, फिर दूसरे लॉग आउटपुट करता है, और केवल यह आपके ब्राउजर में भेजा और दिखाया जाता है।

यदि आप अपनी ब्राउज़र स्क्रीन पर देरी दिखाना चाहते हैं तो आपको जावास्क्रिप्ट की आवश्यकता है।

function showLog() { 
 
    $(".secondlog").show(); 
 
} 
 

 
$(document).ready(function() { 
 
    setTimeout(showLog,3000); 
 
});
.firstlog { 
 
    border: 1px solid #AEAEAE; 
 
} 
 

 
.secondlog { 
 
    display: none; 
 
    border: 1px solid #AEAEAE; 
 
    margin-top: 20px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="firstlog"> 
 
    Output of first log 
 
</div> 
 
<div class="secondlog"> 
 
    Output of second log 
 
</div> 
 

 
<p>Wait for 3 seconds...</p>

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