Karena pertanyaan awal Anda adalah apa perbedaan antara kedua teknik tersebut, saya akan mulai dengan ini:
jajak pendapat AJAX
Menggunakan polling AJAX untuk memperbarui halaman berarti Anda mengirim permintaan dalam interval yang ditentukan ke server, yang akan terlihat seperti ini:
Klien mengirimkan permintaan ke server dan server segera merespons.
Contoh sederhana (menggunakan jQuery) akan terlihat seperti ini:
setInterval(function(){
$('#myCurrentMoney').load('getCurrentMoney.php');
}, 30000);
Masalahnya adalah, ini akan menyebabkan banyak permintaan yang tidak berguna karena tidak akan selalu ada hal baru di setiap permintaan.
jajak pendapat panjang AJAX
Menggunakan polling panjang AJAX akan berarti, bahwa klien mengirim permintaan ke server dan server menunggu data baru tersedia sebelum dia merespons. Ini akan terlihat seperti ini:
Klien mengirimkan permintaan dan server merespons "tidak teratur". Segera setelah server merespons, klien akan mengirimkan permintaan baru ke server.
Sisi klien akan terlihat seperti ini:
refresh = function() {
$('#myCurrentMoney').load('getCurrentMoney.php',function(){
refresh();
});
}
$(function(){
refresh();
});
Apa yang akan dilakukan adalah hanya memuat getCurrentMoney.php
's output ke elemen uang saat ini dan segera setelah ada panggilan balik, mulai permintaan baru.
Di sisi server Anda biasanya menggunakan loop. Untuk menjawab pertanyaan Anda, bagaimana server akan mengetahui, mana yang merupakan publikasi baru:apakah Anda meneruskan stempel waktu publikasi terbaru ke klien yang tersedia ke server atau Anda menggunakan waktu "jajak pendapat panjang dimulai" sebagai indiactor:
<?
$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";
Di sini kami tidak akan menerima permintaan "tidak berguna".