PHP:返回当前会话的生命周期

时间:2009-03-07 17:59:26

标签: php session

我正在寻找一种方法来检查PHP会话的生命周期,并返回会话“活着”的秒数。

是否有我错过的PHP函数?

3 个答案:

答案 0 :(得分:6)

您可以存储会话初始化的时间并返回该值:

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;
}

答案 1 :(得分:3)

我认为有两种选择都不是很好,但在这里它们是。

1)如果您有权访问文件系统,则可以检查会话文件的创建时间戳。

2)将创建时间存储在会话中,例如

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

答案 2 :(得分:2)

您只需在会话中存储创建会话的时间戳