Mysql
 sql >> база данни >  >> RDS >> Mysql

Разлика между нормален ajax и дълга анкета

Тъй като първоначалният ви въпрос беше каква е разликата между двете техники, ще започна с това:

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. Заявката за MySQL Insert не работи с клауза WHERE

  2. падащ списък на ajax php

  3. Вмъкване на текущата дата във формат за дата и час mySQL

  4. Защо кардиналността на индекс в MySQL остава непроменена, когато добавя нов индекс?

  5. Codeigniter `where` и `or_where`