session_start()上的致命错误

时间:2015-06-25 13:39:52

标签: php

我有这个功能来跟踪用户会话时间。

function sessionTracker(){
    ini_set('session.cookie_lifetime', 86400);
    ini_set('session.gc_maxlifetime', 86400);
    $sid = session_id();
    if ($sid != '') {
        //echo "Session exists!";
    } else {
        //echo "No current session exists! Starting...";
        session_start();
    }

    if(!isset($_SESSION['username']))
    {
        header("location:login.php");
        exit();
    }

但是我得到了一个"超过30秒的最大执行时间"当它遇到session_start();线。是否有更好的功能或如何解决这个问题?我不是一直都能得到它,但总是如此。

function sessionReup() {
    $time = $_SERVER['REQUEST_TIME'];

    //for a 30 minute timeout, specified in seconds
    $timeout_duration = 1800;

    /*
      Here we look for the user’s LAST_ACTIVITY timestamp. If
      it’s set and indicates our $timeout_duration has passed,
      blow away any previous $_SESSION data and start a new one.
    */
    if (isset($_SESSION['LAST_ACTIVITY']) && ($time -     $_SESSION['LAST_ACTIVITY']) > $timeout_duration) {
        session_unset();
        session_destroy();
        session_start();
        header("location:login.php");
        exit();
    }

    /*
     Finally, update LAST_ACTIVITY so that our timeout
     is based on it and not the user’s login time.
    */
    $_SESSION['LAST_ACTIVITY'] = $time;
}

2 个答案:

答案 0 :(得分:0)

代码没有显示一行,它可能负责长运行时。 会话存储到硬盘。设备真的很慢吗? 你有没有交换会话处理程序?

但您可以将代码缩减为:

session_start();

if(!isset($_SESSION['username']))
{
    header("location:login.php");
    exit();
}

答案 1 :(得分:0)

我想我发现了问题所在。在ajax调用我调用具有旧代码的php页面,因为它是旧代码,我从未更新过这个页面。罪魁祸首,

if(!isset($_SESSION)){
    session_start();
}