पर डेटा उपलब्ध होने पर परिणाम वेबपृष्ठ पर परिणाम प्रदर्शित करें मैं पाइथन में एक सीजीआई पृष्ठ लिख रहा हूं। मान लें कि एक ग्राहक मेरे सीजीआई पेज पर अनुरोध भेजता है। मेरा सीजीआई पृष्ठ गणना करता है और जैसे ही यह पहला आउटपुट होता है, यह उस आउटपुट को क्लाइंट को वापस भेजता है, लेकिन यह गणना करने के लिए जारी करेगा और अन्य प्रतिक्रियाएं के बाद पहली प्रतिक्रिया भेजी जाती है।सर्वर पर
क्या मैंने यहां प्रस्तुत किया है? मैं इस सवाल से पूछता हूं क्योंकि मेरे सीमित ज्ञान में, सीजीआई पेज प्रतिक्रियाओं में एक बार मूलभूत भेजा जाता है, प्रतिक्रिया मिलने के बाद, सीजीआई-पेज चलना बंद हो जाता है। यह बात सर्वर साइड या क्लाइंट साइड पर बनाई गई है, और मैं इसे कैसे कार्यान्वित कर सकता हूं?
मेरा सर्वर अपाचे चला रहा है। आपका बहुत बहुत धन्यवाद।
मैंने इस मंच में "डीआरआर" से क्लाइंट कोड का प्रयास किया है (धन्यवाद, मुझे यह पता चला कि कितना समय-समय पर मतदान कार्य करता है)।
import sys
if __name__ == "__main__":
sys.stdout.write("Content-Type: text/html\r\n\r\n")
print "<html><body>"
for i in range(10):
print "<div>%s</div>" % i
sys.stdout.flush()
print "</body></html>"
मैं एक समय में 1 संख्या प्रदर्शित करने के लिए मेरे मुवक्किल पेज की उम्मीद कर रहा हूँ (0,1,2, ...), लेकिन हमेशा डेटा:
<html>
<head>
<title>BargePoller</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
body{ background:#000;color:#fff;font-size:.9em; }
.msg{ background:#aaa;padding:.2em; border-bottom:1px #000 solid}
.old{ background-color:#246499;}
.new{ background-color:#3B9957;}
.error{ background-color:#992E36;}
</style>
<script type="text/javascript" charset="utf-8">
function addmsg(type, msg){
/* Simple helper to add a div.
type is the name of a CSS class (old/new/error).
msg is the contents of the div */
$("#messages").append(
"<div class='msg "+ type +"'>"+ msg +"</div>"
);
}
function waitForMsg(){
/* This requests the url "msgsrv.php"
When it complete (or errors)*/
$.ajax({
type: "GET",
url: "msgsrv.php",
async: true, /* If set to non-async, browser shows page as "Loading.."*/
cache: false,
timeout:50000, /* Timeout in ms */
success: function(data){ /* called when request to barge.php completes */
addmsg("new", data); /* Add response to a .msg div (with the "new" class)*/
setTimeout(
'waitForMsg()', /* Request next message */
1000 /* ..after 1 seconds */
);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
addmsg("error", textStatus + " (" + errorThrown + ")");
setTimeout(
'waitForMsg()', /* Try again after.. */
"15000"); /* milliseconds (15seconds) */
},
});
};
$(document).ready(function(){
waitForMsg(); /* Start the inital request */
});
</script>
</head>
<body>
<div id="messages">
<div class="msg old">
BargePoll message requester!
</div>
</div>
</body>
</html>
और यहाँ अपने सर्वर कोड है एक बार में बाहर आता है (...)। कृपया इसे समझने में मेरी सहायता करें। धन्यवाद आप लोग बहुत ज्यादा।
बस थोड़ा सा ट्रैक, मैं jquery धूमकेतु प्लगइन का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे पर्याप्त दस्तावेज नहीं मिला। मदद की बहुत सराहना की जाएगी। धन्यवाद फिर से: डी
[संपादित करें] ठीक है दोस्तों, आखिरकार आपके गाइड के लिए धन्यवाद, मैंने इसे काम करने में कामयाब रहा है। जब आप भविष्यवाणी करते हैं कि mod_deflate यह सब का स्रोत है, तो आप सही कह रहे हैं।
सारांश में, मैं यहाँ क्या किया है:
ग्राहक के लिए, ऊपर
सर्वर के लिए HTML कोड के रूप में एक लंबे सर्वेक्षण पेज बनाने के लिए, द्वारा mod_deflate निष्क्रिय कर दें: संपादन फ़ाइल/आदि/apache2/mods-available/deflate.conf, टेक्स्ट/एचटीएमएल भाग के साथ लाइन को टिप्पणी करें और सर्वर को पुनरारंभ करें। यह सुनिश्चित करने के लिए कि पाइथन आउटपुट को स्वयं बफर नहीं करता है, पृष्ठ की शुरुआत में #!/Usr/bin/python -u शामिल करें। प्रत्येक प्रिंटिंग के बाद sys.stdout.flush() का उपयोग करना याद रखें जिसे आप क्लाइंट में दिखाना चाहते हैं। प्रभाव पारदर्शी नहीं हो सकता है, परीक्षण करने के लिए time.sleep (1) शामिल होना चाहिए। : डी का समर्थन करने और इस को हल करने में मदद के लिए बहुत बहुत
धन्यवाद तुम लोग: डी
प्रभावशाली विस्तृत उत्तर। आपके लिए बहुत अच्छा काम धन्यवाद: डी। मे लूँगा जितनी जल्दी हो सके इसे आजमाएं। – wakandan
मैंने jquery-समर्थित के साथ एक साधारण पृष्ठ का उपयोग करके इसका परीक्षण किया है। ऐसा प्रतीत होता है कि सभी परिणाम आते हैं और एक क्रमशः नहीं। मैं यहाँ क्या खो रहा हूँ? – wakandan
शायद आपके पास सर्वर पर अतिरिक्त बफरिंग करने वाला एक फ़िल्टर है। जिसने इसे काम करना बंद कर दिया था वह ऊपर उल्लेखित mod_deflate था, लेकिन अन्य फ़िल्टरों का भी असर हो सकता है। – bobince