Используйте Ajax для наблюдения базы данных SQL за [закрытыми] изменениями

18
задан Jacob Huggart 11 May 2010 в 18:23
поделиться

8 ответов

использовать функцию setinterval javascript для опроса и проверки значения обновленного поля dababase

смотрите следующую ссылку для более подробной информации http://www.elated.com/articles/javascript-timers-with-settimeout-and-setinterval/

5
ответ дан 30 November 2019 в 08:15
поделиться

То, что вы описываете, в просторечии называется Кометное программирование. Comet описывает группу методов для продвижения контента на веб-страницу с постоянным HTTP-соединением.

Отправка будет инициирована с использованием комбинации триггера / хранимой процедуры на сервере базы данных. Таким образом, это происходит независимо от того, откуда поступают обновления данных.

11
ответ дан 30 November 2019 в 08:15
поделиться

Сервер (база данных/веб) не может инициировать соединение - только клиент может. Поэтому вам придется опрашивать базу данных до тех пор, пока не появится обновление. Вы можете создать веб-службу, которая проверяет базу данных и которую использует jQuery.

Edit: Я поправился. Можно держать AJAX-соединение открытым, пока сервер не "подтолкнет" к нему данные. См: http://en.wikipedia.org/wiki/Reverse_Ajax

И, по-видимому, это действительно опрос: http://en.wikipedia.org/wiki/Push_technology#Long_polling. Если у сервера еще нет данных для отправки, он держит соединение открытым, пока не получит их. Это не "чистая" технология push, потому что у клиента нет порта прослушивания, к которому подключается сервер. Однако эффект схож.

Edit 2: Итак, вернемся к ответу на ваш вопрос... Вам придется выбрать способ "опроса" веб-службы. Затем веб-служба должна будет проверить базу данных на наличие обновлений. Проверка базы данных на наличие обновлений может быть самой сложной и зависит от ваших требований. Можно выполнить SQL-запрос, чтобы проверить, изменилось ли что-нибудь, но как это узнать? Вам понадобится какой-то параметр (обычно дата) для сравнения. Если сделать это неправильно, можно пропустить некоторые обновления или получить несколько совпадений для одного обновления. То, что сказал Autocracy, было бы хорошим способом получать уведомления об обновлениях. Вы можете хранить этот список в базе данных, в памяти и т.д. и очищать его, когда клиент получает обновления.

5
ответ дан 30 November 2019 в 08:15
поделиться

У меня почти то же самое с чатом, перезагружает php скрипт каждые xx сек.

Выглядит так: замените j на $, если не используете jquery.noconflict...

j(".chatref").everyTime(3000,function(i){
    j.ajax({
       url: "chatx.php",
       cache: false,
       success: function(updated){
           j(".chatref").html(updated);
           ...do stuff..
       }
   });

Это очень хороший метод, я думаю :) если вы хотите посылать вары в chatx.php просто добавьте ?php &x=1&y=2?>

3
ответ дан 30 November 2019 в 08:15
поделиться

Вставьте в базу данных специальную хранимую процедуру, которая оповещает ваше приложение после внесения изменений. Вам понадобится пользовательский модуль и правильные триггерные операторы.

Другой вариант - опрос.

2
ответ дан 30 November 2019 в 08:15
поделиться

Вам придется постоянно опрашивать страницу, которая имеет значение из базы данных.

1
ответ дан 30 November 2019 в 08:15
поделиться

По сути, вам придется постоянно опрашивать сервер на предмет изменений в БД. Сервер не может сделать звонок клиенту, поэтому клиент должен будет постоянно спрашивать сервер, были ли изменения.

0
ответ дан 30 November 2019 в 08:15
поделиться

Я бы предложил создать HTML-страницу, которая использует setIntreval() для многократного AJAX-вызова PHP-скрипта, который запрашивает вашу базу данных. Вы можете использовать JSON и PEAR, чтобы немного упростить задачу.

Ссылки:

1
ответ дан 30 November 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: