2010-07-26 2 views
3

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

Любая помощь будет оценена! :)Использование AJAX для страницы автоматического обновления, содержащей значения из базы данных?

ответ

2

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

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

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

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

+0

что вы сказали минус даже если беспокоиться толчок. –

+0

@ Talvi Watia: Я бы точно не сказал, что я «беспокоился» о толчке. Просто указывая, что OP описывал push-подобную систему (с его необходимыми спецификациями). – MarkD