Использование AJAX для страницы автообновления, содержащей значения из базы данных? - PullRequest
3 голосов
/ 26 июля 2010

Может кто-нибудь объяснить, как создать страницу .php, которая автоматически обновляет значения из базы данных? Будет ли лучше использовать AJAX для чего-то подобного? Мне нужен этот код PHP, но я хочу, чтобы страница обновлялась всякий раз, когда «values01» добавлялась или изменялась, без необходимости обновления страницы.
$query = "SELECT values01 FROM users WHERE username='$username'";<br> $result = mysql_query($query);<br> while($row = mysql_fetch_array($result, MYSQL_ASSOC))<br> {<br> echo nl2br("{$row['values01']}");<br> }
Любая помощь будет оценена! :)

1 Ответ

2 голосов
/ 26 июля 2010

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

Существует способ обойти ограничение толчка, которое обычно используется:

  1. Браузер подключается к странице, загружаеттекущее «состояние» базы данных.Переменная сеанса (назовем ее $ _SESSION ['currentState']) сохраняется с начальным состоянием базы данных.Таймер javascript в браузере клиента начинает тикать (допустим, что таймер длится 10 секунд).
  2. Когда время таймера истекает, на сервере выполняется сценарий AJAX.Давайте назовем этот скрипт "updateValues.php".updateValues.php проверяет новое состояние базы данных.Если база данных отличается от $ _SESSION ['currentState'], мы возвращаем любые внесенные изменения в некоторой удобной форме (json, xml и т. Д.) И обновляем $ _SESSION ['currentState'] с новым состоянием.Если не было никаких изменений, мы отвечаем с чем-то в такой степени.
  3. После получения данных браузер выполняет некоторый javascript, который затем обновляет рендеринг в браузере, если были внесены изменения в БД, и затем перезапускается.таймер.
  4. goto 2.

Единственное, чего вам не хватает здесь в типичном push-уведомлении, - это 10-секундная задержка (или то, что вы выбираете для таймера).

...