PHP: вернуть жизнь текущей сессии - PullRequest
1 голос
/ 07 марта 2009

Я ищу способ проверить жизнь сеанса PHP и вернуть количество секунд, в течение которых сеанс был «жив».

Есть ли какая-то функция PHP, в которой я пропускаю?

Ответы [ 3 ]

6 голосов
/ 07 марта 2009

Вы можете сохранить время инициализации сеанса и вернуть это значение:

session_start();
if (!isset($_SESSION['CREATED'])) {
    $_SESSION['CREATED'] = time();
}

А для извлечения этой информации из произвольного сеанса:

function getSessionLifetime($sid)
{
    $oldSid = session_id();
    if ($oldSid) {
        session_write_close();
    }
    session_id($sid);
    session_start();
    if (!isset($_SESSION['CREATED'])) {
        return false;
    }
    $created = $_SESSION['CREATED'];
    session_write_close();
    if ($oldSid) {
        session_id($oldSid);
        session_start();
    }
    return time() - $created;
}
3 голосов
/ 07 марта 2009

Я думаю, что есть два варианта, но ни один из них не хорош.

1) Если у вас есть доступ к файловой системе, вы можете проверить метку времени создания файла сеанса.

2) Сохраните время создания в сеансе, например,

session_start();
if( ! isset($_SESSION['generated'])) {
    $_SESSION['generated'] = time();
}
2 голосов
/ 07 марта 2009

Вы можете просто сохранить временную метку, на которой сеанс был создан в сеансе

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