Живое Уведомление Jquery - PullRequest
       11

Живое Уведомление Jquery

4 голосов
/ 21 декабря 2009

Может ли кто-нибудь привести меня к правильному способу делать живые уведомления

например, знать, когда в Mysql добавлена ​​новая строка

знать, если файл php изменился ???

как мне это сделать?

Ответы [ 2 ]

8 голосов
/ 21 декабря 2009

Вы можете регулярно проверять сервер на наличие обновлений, используя setInterval(), или вы можете использовать длинные опросы с использованием JavaScript. Преимущество setInterval() заключается в том, что он не позволяет долго открывать соединения на вашем сервере, но вы можете получать обновления во время «простоя» между вызовами на сервер. Длинный опрос даст вам почти мгновенные обновления, так как он ждет с открытым соединением, пока не получит новую информацию. Но очевидно, что недостатком является то, что у вас есть соединения, которые остаются открытыми повсюду.

Обычные проверки ...

setInterval(function(){
  $.get("updates.php", {}, function(results){
    if ($(results).length) {
      $("results").each(function(){
        // do something with update messages
      });
    }
  });
}, 30000); // Every 30 seconds.

Длинный опрос с PHP / jQuery Пример:

Пример длинного опроса с PHP и jQuery можно найти по адресу http://blog.perplexedlabs.com/2009/05/04/php-jquery-ajax-javascript-long-polling/

2 голосов
/ 21 декабря 2009

Вы можете использовать триггеры БД для отслеживания изменений в определенных таблицах и вставки данных уведомлений в новую таблицу. Затем. периодически запрашивайте эту таблицу базы данных с помощью Jquery и ajax.

Workflow:

  1. Создать триггер, который просматривал таблицу users для вставок, обновлений и удаленных
  2. Как только users изменено, триггер вставляет новую запись в notifications с подробным описанием того, что было изменено
  3. Используя периодическое средство обновления, проверьте таблицу notifications на наличие новых записей и отобразите их пользователю.

Этот простой рабочий процесс может быть не таким простым для реализации, как можно было бы надеяться, но он бы справился с работой эффективно.

...