मुझे अभी यह पोस्ट मिला है, यह पुराना है, लेकिन मतदान अवधारणा बहुत सारे लोगों के लिए परेशानी देती है। तो मैं यहां एक कार्यान्वयन उदाहरण डालूंगा। लेकिन इसे आपको देने से पहले, मुझे आपको सलाह दी जानी चाहिए कि मुझे कुछ समय पहले पागल बना दिया गया:
जब आप मतदान करते हैं, तो आपको सत्र व्यवहार (race conditions) का ख्याल रखना चाहिए। इसे सरल बनाने के लिए: यदि आप कोई सत्र खोलते हैं, तो सत्र फ़ाइल तब तक लॉक हो जाती है जब तक सत्र में बंद नहीं किया जाता है ताकि इसमें दो अलग-अलग डेटा लिखने से बचें। इसलिए, यदि आपको यह देखने के लिए सत्र की आवश्यकता है कि कोई उपयोगकर्ता लॉग है या नहीं, तो हमेशा मतदान से पहले सत्र बंद करें।
मेरा डेमो आपको PHP में मतदान कार्यान्वयन का एक उदाहरण देता है। मैं डेटाबेस का उपयोग नहीं करूंगा, बल्कि इसके बजाय एक फाइल का उपयोग करूंगा। जब आप मतदान बटन पर क्लिक करते हैं, तो आप लूप दर्ज करेंगे और फ़ाइल संशोधित होने तक, आप मतदान जारी रखेंगे। जब आप फॉर्म भरते हैं और रिलीज पर क्लिक करते हैं, तो आपने जो लिखा है उसे फ़ाइल में सहेजा जाएगा। फ़ाइल का संशोधन समय बदल जाएगा इसलिए मतदान बंद हो जाएगा।
युक्ति: क्या होता है यह देखने के लिए Firebug जैसे टूल का उपयोग करें।
<?php
// For this demo
if (file_exists('poll.txt') == false) {
file_put_contents('poll.txt', '');
}
if (isset($_GET['poll'])) {
// Don't forget to change the default time limit
set_time_limit(120);
date_default_timezone_set('Europe/Paris');
$time = time();
// We loop until you click on the "release" button...
$poll = true;
$number_of_tries = 1;
while ($poll)
{
// Here we simulate a request (last mtime of file could be a creation/update_date field on a base)
clearstatcache();
$mtime = filemtime('poll.txt');
if ($mtime > $time) {
$result = htmlentities(file_get_contents('poll.txt'));
$poll = false;
}
// Of course, else your polling will kill your resources!
$number_of_tries++;
sleep(1);
}
// Outputs result
echo "Number of tries : {$number_of_tries}<br/>{$result}";
die();
}
// Here we catch the release form
if (isset($_GET['release']))
{
$data = '';
if (isset($_GET['data'])) {
$data = $_GET['data'];
}
file_put_contents('poll.txt', $data);
die();
}
?>
<!-- click this button to begin long-polling -->
<input id="poll" type="button" value="Click me to start polling" />
<br/><br/>
Give me some text here :
<br/>
<input id="data" type="text" />
<br/>
<!-- click this button to release long-polling -->
<input id="release" type="button" value="Click me to release polling" disabled="disabled" />
<br/><br/>
Result after releasing polling :
<div id="result"></div>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript">
// Script to launch polling
$('#poll').click(function() {
$('#poll').attr('disabled', 'disabled');
$('#release').removeAttr('disabled');
$.ajax({
url: 'poll.php',
data: {
poll: 'yes' // sets our $_GET['poll']
},
success: function(data) {
$('#result').html(data);
$('#poll').removeAttr('disabled');
$('#release').attr('disabled', 'disabled');
}
});
});
// Script to release polling
$('#release').click(function() {
$.ajax({
url: 'poll.php',
data: {
release: 'yes', // sets our $_GET['release']
data: $('#data').val() // sets our $_GET['data']
}
});
});
</script>
स्रोत
2012-09-14 19:08:29
इस तकनीक धूमकेतु पुस्तकालय आदि पर तीसरे पर जोड़ने बिल्ला के लिए rquired है की कोशिश कर सकते हैं:
अब मेरी अंग्रेजी की तुलना में बेहतर langage में बोलते हैं? या ठेठ servlet पर सेवा कर सकते हैं? क्या कोई डेमो/वर्किंग ऐप है जिसका हम उल्लेख कर सकते हैं? – cometta
हमें comet.aspx का उदाहरण दिखा सकता है? – cometta
इस तकनीक को उठने और चलाने के लिए IIS6 और .NET से परे कुछ भी आवश्यकता नहीं है। –