2016-10-19 1 views
0

Как и некоторые обновления для пользователей x, информация о сайте и другом пользователе z должна получать уведомление об обновлении x, не обновляя страницу.Как получить данные из базы данных при обновлении в любой таблице базы данных

+0

За то, что я хотел бы предложить, чтобы сделать это с хрон. –

ответ

0

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

1) клиент тянуть

На странице клиента (пользователя Z), вы должны отправить AJAX запросы каждый раз в то время (каждые 1 сек?) И сценарий на стороне сервера должен определить, какие значения были изменены с момента последнего запроса. Это в значительной степени зависит от существования поля временной метки, которое обновляется с использованием триггеров для каждой вставки или обновления SQL (или удаления?).

2) Сервер толчок

Используя WebSockets, клиент (пользователь Z) сохраняет открытое соединение с сервером. На сервере процесс постоянно работает в фоновом режиме и периодически проверяет базу данных (каждые 1 секунду?) На обновления (опять же на основе временных меток) и отправляет разницу клиенту на веб-сайте.

Обнаружение изменений

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

0

Не имея слишком технических средств, вы можете использовать комбинацию диспетчера событий и метод push-уведомлений (например, службу веб-раскладки).

Служба вашего веб-сервиса должна подписаться на диспетчер событий.

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

На стороне веб-приложения, вы, конечно, должны быть подписаны на WebSocket, а затем делать все, что это необходимо с данными, который приходит в.

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

0
window.setInterval(function(){ 
    /// ajax call here, for example: 
    $.ajax({ 
     type: "POST", 
     url: 'your-url-to-check-if-there-is-any-updates', 
      dataType: "html", 
      data: { your data}, 
      success: function(data) { 
       // do something with notifications 
       return data; 
      } 
    }); 
}, 5000); 

Это проверит вашу таблицу каждые 5 секунд. Вам нужно будет отправить старые данные в URL-адрес, чтобы проверить, есть ли что-то новое, и если да, сделайте что-то в успешной функции.

Однако это не рекомендуется.

Как @Simon сказал, использование WebSockets, например: sockets.io

Смежные вопросы