Ваш файл 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, чтобы предоставить сценарию временную метку, которую он может передать при последующих запросах.