Я пытаюсь написать простое приложение для веб-чата с PHP и AJAX.Отслеживание зарегистрированных пользователей в PHP
Мне нужно знать обо всех открытых сеансах, чтобы я мог отображать список онлайн-пользователей, с которыми можно поговорить. Мне также нужно знать о выходах журнала, потому что я использую «как отправку, так и принимающую сторону в автономном режиме» как условие для рассмотрения сеанса чата, завершенного и удаляющего сообщения.
Я отслеживаю вход в систему пользователей в базе данных: добавление записи при входе в систему и ее удаление при выходе из системы отлично работают, но это не является полным, так как есть два других способа, которыми пользователь может зарегистрироваться out:
- Сессия на стороне сервера заканчивается после простоя.
- клиентская сторона cookie уничтожается при закрытии браузера. Похоже, плохая идея использовать какой-то запущенный AJAX (что если браузер сбой или что-то?).
Простейшее решение, похоже, сохраняет временную метку последней активности. Я вижу некоторые проблемы с этим, хотя:
- AFAIK стороне сервера экспирации шанс на основе, так что это не будет точным (и если я получаю время истечения 3 минут неправильно, это 3 минуты, где какой-то парень может быть разговаривая с пользователем в автономном режиме, задаваясь вопросом, почему никто не отвечает)
- Мне пришлось бы постоянно запрашивать базу данных, чтобы проверять каждое зарегистрированное в последний раз время активности пользователей по сравнению с текущим временем. Я не вижу, когда/где я буду делать это эффективно. Кажется глупым делать это каждый раз, когда нужен список онлайн-пользователей.
Любая помощь оценивается. Я сам кодирую это, потому что я не знаю каких-либо веб-чат-фреймворков, которые могут интегрироваться с моей существующей пользовательской базой данных, поправьте меня, если я ошибаюсь.
ОК, я понял, что на самом деле мне не нужно пытаться проверять метку времени. Поскольку каждый пользователь постоянно запрашивает проверку новых сообщений, я также могу обновлять временную метку каждый раз, когда идет запрос, и считать все временные метки> 20-секундными пользователями неактивными. Поэтому теперь мне просто нужно найти лучший способ для базы данных автоматически удалять записи со старыми отметками времени. – Jonathan
@bfavaretto Большое спасибо за то, что заметили! программисты, кажется, правильное место, чтобы спросить, сделают. – Jonathan