好像办不到,
可以写一个程序,定期运行,删掉所有session
或是把session保存目录设在系统temp文件夹 ,系统重启会自动处理

解决方案 »

  1.   

    楼主,不生成session那还用session干吗?
      

  2.   

    session 是系统(PHP)自己管理 的啊,一般是一个星期以后就会被删掉,你也可在PHP.INI中修改,其实也只是一个随机号等信息而已,不会占多少空间,我觉得没有必要人为管理!
      

  3.   

    在不用SESSION的情况下可用下面禁止自动生成:
    ini_set("session.auto_star",0);如果使用SESSION,又不想以文件方式保存,可以考虑使用session_set_save_handler存入数据库:
    if(!mysql_table_exists("sessions",$DB))
    {
          $query = 'CREATE TABLE sessions
                    (
                     SessionID     char(255)   not null,
                     LastUpdated   datetime    not null,
                     DataValue     text,
                     PRIMARY KEY ( SessionID ),
                     INDEX ( LastUpdated )
                    )';
          mysql_query($query);
    }
                                
    function sessao_open($aSavaPath, $aSessionName)
    {
          global $aTime;
          sessao_gc( $aTime );
          return True;
    }
    function sessao_close()
    {
          return True;
    }
    function sessao_read( $aKey )
    {
          $query = "SELECT DataValue FROM sessions WHERE SessionID='$aKey'";
          $busca = mysql_query($query);
          if(mysql_num_rows($busca) == 1)
          {
                $r = mysql_fetch_array($busca);
                return $r['DataValue'];
          } ELSE {
                $query = "INSERT INTO sessions (SessionID, LastUpdated, DataValue)
                          VALUES ('$aKey', NOW(), '')";
                mysql_query($query);
                return "";
          }
    }
    function sessao_write( $aKey, $aVal )
    {
          $aVal = addslashes( $aVal );
          $query = "UPDATE sessions SET DataValue = '$aVal', LastUpdated = NOW() WHERE SessionID = '$aKey'";
          mysql_query($query);
          return True;
    }
    function sessao_destroy( $aKey )
    {
          $query = "DELETE FROM sessions WHERE SessionID = '$aKey'";
          mysql_query($query);
          return True;
    }
    function sessao_gc( $aMaxLifeTime )
    {
          $query = "DELETE FROM sessions WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(LastUpdated) > $aMaxLifeTime";
          mysql_query($query);
          return True;
    }
    session_set_save_handler("sessao_open", "sessao_close", "sessao_read", "sessao_write", "sessao_destroy", "sessao_gc");
      

  4.   

    php清除session临时文件的默认概率是千分之一
    如果网站流量大可以把概率调小,流量小的话可以调高
    具体在php.ini的[session]段
    session.gc_probability = 1
    session.gc_divisor     = 100这样设置是100次访问会激活一次清除垃圾的进程