PHP сделать что-нибудь, когда сессия уничтожена - PullRequest
2 голосов
/ 07 марта 2012

Мне было интересно, смогу ли я определить, был ли завершен чей-то сеанс, и могу ли я что-то сделать, если он это сделал.

Так, например, если сеанс завершился, установите статус игрока в автономный режим.

Ответы [ 2 ]

1 голос
/ 07 марта 2012

Если пользователь не отправляет запрос на сервер, вы не можете точно знать, когда закончился его сеанс, если вы не используете систему базы данных. Например, у вас есть таблица сессий:

session_id | user_id | session_start_time

Всякий раз, когда вы загружаете страницу, вы просматриваете, является ли session_start_time достаточно старым, чтобы быть удаленным. Например:

if (($data['session_start_time'] + USER_SESSION_TTL) < time()) {
    // delete row
}

USER_SESSION_TTL - это время, когда сеанс пользователя остается активным, если он неактивен.

Теперь, если у пользователя нет сеанса, связанного с ним, вы можете смело предполагать, что он не в сети. Я немного обобщил, но это может быть применено ко многим системам.

Надеюсь, это поможет

0 голосов
/ 07 марта 2012

Для этого нет встроенного механизма, хотя, если вы реализуете свой собственный обработчик сеанса, вы, вероятно, можете что-то с этим сделать.

См. http://nl2.php.net/manual/en/function.session-set-save-handler.php для некоторых идей.

...