Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सामान्य अजाक्स और लंबे मतदान के बीच अंतर

चूँकि आपका प्रारंभिक प्रश्न था कि दोनों तकनीकों में क्या अंतर है, मैं इसके साथ शुरू करूँगा:

AJAX मतदान

पेज को अपडेट करने के लिए AJAX पोलिंग का उपयोग करने का मतलब यह होगा कि आप सर्वर को एक निर्धारित अंतराल में एक अनुरोध भेजते हैं, जो इस तरह दिखेगा:

क्लाइंट तुरंत सर्वर और सर्वर प्रतिक्रियाओं को एक अनुरोध भेजता है।

एक साधारण उदाहरण (jQuery का उपयोग करके) इस तरह दिखेगा:

setInterval(function(){
    $('#myCurrentMoney').load('getCurrentMoney.php');
}, 30000);

इसके साथ समस्या यह है कि इससे बहुत सारे बेकार अनुरोध होंगे क्योंकि हर अनुरोध पर हमेशा नई चीजें नहीं होंगी।

AJAX लंबा मतदान

AJAX लंबे मतदान का उपयोग करने का अर्थ यह होगा कि क्लाइंट सर्वर को एक अनुरोध भेजता है और सर्वर प्रतिक्रिया देने से पहले नए डेटा के उपलब्ध होने की प्रतीक्षा करता है। यह इस तरह दिखेगा:

क्लाइंट एक अनुरोध भेजता है और सर्वर "अनियमित रूप से" प्रतिक्रिया देता है। जैसे ही सर्वर प्रतिक्रिया करता है, क्लाइंट सर्वर को एक नया अनुरोध भेजेगा।

ग्राहक पक्ष इस तरह दिखेगा:

refresh = function() {
    $('#myCurrentMoney').load('getCurrentMoney.php',function(){
        refresh();
    });
}

$(function(){
    refresh();
});

यह क्या करेगा बस लोड करें getCurrentMoney.php वर्तमान धन तत्व में आउटपुट और जैसे ही कोई कॉलबैक होता है, एक नया अनुरोध शुरू करें।

सर्वर साइड पर आप आमतौर पर लूप का उपयोग करते हैं। आपके प्रश्न को हल करने के लिए कि सर्वर को कैसे पता चलेगा, जो नए प्रकाशन हैं:या तो आप क्लाइंट को उपलब्ध प्रकाशन के लिए नवीनतम का टाइमस्टैम्प सर्वर पर पास करते हैं या आप "लंबे मतदान प्रारंभ" के समय का उपयोग संकेतक के रूप में करते हैं:

<?
$time = time();

while ($newestPost <= $time) {
    // note that this will not count as execution time on linux and you won't run into the 30 seconds timeout - if you wan't to be save you can use a for loop instead of the while
    sleep(10000);
    // getLatestPostTimestamp() should do a SELECT in your DB and get the timestamp of the latest post
    $newestPost = getLatestPostTimestamp();
}

// output whatever you wan't to give back to the client
echo "There are new posts available";

यहां हमारे पास "बेकार" अनुरोध नहीं होंगे।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहीत प्रक्रिया में इनपुट के रूप में PHP सरणी

  2. MySQL> तालिका मौजूद नहीं है। लेकिन यह करता है (या इसे चाहिए)

  3. एक cmakelist.txt में mysql पुस्तकालयों को जोड़ें और लिंक करें

  4. नियमित तालिका से अस्थायी तालिका में अनुक्रमणिका पास करें?

  5. MySQL में SELECT ... FOR UPDATE का उपयोग करके डेडलॉक