php中的会话超时具体时间

时间:2016-08-30 15:26:01

标签: php session

如何设置一定时间来销毁会话?有人能告诉我10分钟后破坏会话的正确方法吗?这是我的代码:

会话授权:

session_start();
if(!isset($_SESSION['SESS_MEMBER_ID']) || (trim($_SESSION['SESS_MEMBER_ID']) == '')) {
    header("location: index.php");
    exit();
}

会话注销:

session_start();
unset($_SESSION['SESS_MEMBER_ID']);
unset($_SESSION['SESS_FIRST_NAME']);
unset($_SESSION['SESS_LAST_NAME']);
header("location: index.php");

会话登录:

if($result) {
    if(mysql_num_rows($result) == 1) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['id'];
        $_SESSION['SESS_USER_ID'] = $member['username'];
        $_SESSION['SESS_FIRST_NAME'] = $member['first_name'];
        $_SESSION['SESS_LAST_NAME'] = $member['last_name'];
        $_SESSION['SESS_USER_TYPE'] = $member['acc_type'];
        session_write_close();
        header("location: user_profile.php");
        exit();
    } else {
        header("location: loginerr.php");
        exit();
    }
} else {
    die("Query failed");
}

1 个答案:

答案 0 :(得分:1)

你不能,除非你推出自己的会话处理系统。默认会话清理系统是随机运行的。每次调用调用session_start()的PHP脚本都有可能触发垃圾收集器。

当GC启动时,它基本上会遍历会话存储目录,并查找任何未在超过默认有效期内访问的文件,并删除任何“陈旧”的文件。

根据定义,如果使用会话(例如调用session_start()并且加载了特定的会话文件),那么它就不会陈旧,也不会被删除。

您需要一个外部系统来安排删除,例如使用at调度程序。