Загрузить страницу при изменениях в базе данных - возможно? - PullRequest
4 голосов
/ 02 декабря 2011

Мне просто интересно, можно ли перезагрузить текущую страницу с помощью jQuery или AJAX, когда база данных была каким-то образом изменена?Если это возможно, как мне сделать это на моем веб-сайте?

Демонстрация того, что я имею в виду: допустим, один посетитель находится на главной странице сайта.Посетитель просто бездействует на странице, когда я публикую новую запись в блоге.Страница перезагружается с помощью jQuery или AJAX, когда видит новую запись блога в базе данных и показывает новую запись для посетителя.Функция Simliar для этого - setTimeout(), но я не хочу подчеркивать сервер, если у меня есть 100 активных посетителей на одной странице.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 03 января 2012

Установите javascript var MyItemID = get_file_contents(notice.html) на странице, используйте setTimeout() для запроса содержимого от notice.html и сравните результат с Вашим MyItemID

Каждый раз, когда вы обновляете свою БД, получите максимальный идентификатор записи через mysql_insert_id() и поместите его в notice.html.

Довольно просто, да? ;)

0 голосов
/ 13 июня 2013

Установить JavaScript

var MyItemID = get_file_contents(notice.html)

на странице, используйте setTimeout() для запроса содержимого от notice.html и сравните результат с вашим MyItemID

Каждый раз, когда вы обновляете свою БД, получите максимальный идентификатор записи через mysql_insert_id() и поместите его в notice.html.

0 голосов
/ 02 декабря 2011

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

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

Вы можете достичь этого, сделав что-то вроде этого:

  1. при запросе страницы сохраните идентификатор последней записи где-нибудь на странице (например, скрытый ввод).
  2. Написать небольшой серверный скрипт, чтобы он возвращал только идентификатор последней записи (простой)
  3. Сравните их на клиенте, если они не совпадают, сделайте полный запрос ajax для нового контента

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

Я не думаю, что вы можете сделать это без этих проверок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...