Если пользователь не отправляет запрос на сервер, вы не можете точно знать, когда закончился его сеанс, если вы не используете систему базы данных. Например, у вас есть таблица сессий:
session_id | user_id | session_start_time
Всякий раз, когда вы загружаете страницу, вы просматриваете, является ли session_start_time достаточно старым, чтобы быть удаленным. Например:
if (($data['session_start_time'] + USER_SESSION_TTL) < time()) {
// delete row
}
USER_SESSION_TTL
- это время, когда сеанс пользователя остается активным, если он неактивен.
Теперь, если у пользователя нет сеанса, связанного с ним, вы можете смело предполагать, что он не в сети. Я немного обобщил, но это может быть применено ко многим системам.
Надеюсь, это поможет