jquery - обновляет страницу, когда новые данные сохраняются в таблице в сеансах браузера. - PullRequest
2 голосов
/ 03 февраля 2010

Среда: PHP / MySQL / Jquery

Я хотел бы обновить страницу (например, index.php), когда новые данные сохраняются в таблице (например, new_entry_table), проверяя каждую минуту.Одна и та же страница будет открыта на многих компьютерах (в браузерах ПК), и все должны обновляться при появлении новых данных.

с использованием проверки jquery и базы данных.*

new_data_check.php:: проверяет наличие новых данных в test_db, где newdata_field = 0;: Если появляются какие-либо новые данные, выведите «1»;И обновите поле newdata_field = 1;перестать постоянно обновлять страницу.: else echo "0";: Только для триггерасеансы (в другом браузере или другом компьютере) не обновляются.

Предложите лучший способ сделать это.Спасибо.

1 Ответ

3 голосов
/ 03 февраля 2010

Ваш файл new_data_check.php должен отслеживать всех пользователей, которые независимо просматривают страницу.

Если нет, то это произойдет:

  • Пользователь 1 и Пользователь 2 оба зашли на сайт.
  • Пользователь 1 выполняет проверку за 5 секунд до того, как Пользователь 1 обнаружил новые данные.
  • Пользователь 1 завершает свой запрос. Сервер очищает бит new_data.
  • Запрос пользователя 2 приходит через 5 секунд. Отвечает на его запрос, но в этот момент Пользователь 1 установил для поля new_data значение 0. Его данные устарели, но Пользователь 1 эффективно использовал его.

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

Что вы можете сделать, это сгенерировать какой-то уникальный хэш для каждого сеанса и передать его браузеру. Затем javascript может предоставить php-скрипт тот же токен.

Другим решением без какого-либо специального бита будет передача временной метки с запросом. По сути, клиент говорит: «мой последний бит данных прибыл в 21:21:53». Затем сервер проверяет и отвечает «Мои самые последние данные были созданы до этого, так что вы все еще в порядке» или «Я получил что-то, что было создано или изменено в 21:22:53, вы должны загрузить это. "

С этим методом вам не нужно беспокоиться о том, кто есть кто. Вместо этого вам нужно иметь время изменения / создания данных, которые вы проверяете на устаревание. Вам также необходимо убедиться, что клиентские часы синхронизированы правильно - еще лучше, не доверяйте клиентам информацию о дате и времени. Возможно, используйте ваш new_data_check.php, чтобы предоставить сценарию временную метку, которую он может передать при последующих запросах.

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