在数据库里建一张表字段如下
id, sessionid,time,
在产生session的时候分别把session_id(),time()存入数据库
通过当前时间与存入数据库时间进行比较如果>30就用
session_destroy();

解决方案 »

  1.   

    session.gc_maxlifetime integer 
    session.gc_maxlifetime 指定过了多少秒之后数据就会被视为“垃圾”并被清除。 注意: 如果不同的脚本具有不同的 session.gc_maxlifetime 数值但是共享了同一个地方存储会话数据,则具有最小数值的脚本会清理数据。此情况下,与 session.save_path 一起使用本指令。 注意: 如果使用默认的基于文件的会话处理器,则文件系统必须保持跟踪访问时间(atime)。Windows FAT 文件系统不行,因此如果必须使用 FAT 文件系统或者其他不能跟踪 atime 的文件系统,那就不得不想别的办法来处理会话数据的垃圾回收。自 PHP 4.2.3 起用 mtime(修改时间)来代替了 atime。因此对于不能跟踪 atime 的文件系统也没问题了。
    session.cookie_lifetime integer 
    session.cookie_lifetime 以秒数指定了发送到浏览器的 cookie 的生命周期。值为 0 表示“直到关闭浏览器”。默认为 0。
      

  2.   

    /* set the cache expire to 30 minutes */
    session_cache_expire(30);
    session_start();
      

  3.   

    设定session变量时,附加多一个$_SESSION['session_time']//...
    $_SESSION['sesstion_time'] = time();
    //...用以下代码进行超时验证//...
    $timeout = 30*60;//设置30分钟超时
    if( time() > ($_SESSION['session_time'] + $timeout) )
    {
        $_SESSION = array();//超时了,清空session
        //...
    }else{
        $_SESSION['session_time'] = time();//没超时,刷新session时间
         //...
    }
    //...