ThinkPHP3.0完全开发手册                                           

 

13.5.3          Session驱动

新版支持对session hander驱动,可以通过驱动更改session的管理机制。Session驱动扩展目录位于Extend/Driver/Session下面,命名规范是:

Session+驱动类名称(首字母大写)

并实现下面的驱动接口:

方法说明

接口方法

执行入口

execute () 并且在方法中调用session_set_save_handler函数指定hander操作机制

并建议添加下面的接口方法

打开Session

open($savePath, $sessionName)

关闭Session

close()

读取Session

read($id)

写入Session

write($id, $data)

删除Session

destory($id)

Session 过期回收

gc($maxlifetime)

例如,下面我们实现了一个memcache类型的session hander驱动:

class SessionMemcache {

    private static $lifetime = 0;

   // open接口

    public static function open() {

        self::$lifetime = ini_get('session.gc_maxlifetime');

         return true;

    }

   // read接口

    public static function read($id) {

        return memcached::get("sessions/{$id}");

    }

   // write接口

    public static function write($id, $data)  {

        return memcached::set("sessions/{$id}", $data, self::$lifetime);

    }

   // destory接口

    public static function destroy($id)  {

        return memcached::delete("sessions/{$id}");

    }

   // gc接口

    public static function gc(){ return true; }

   // close接口

    public static function close(){    return true; }

    public function __destruct()  {

        session_write_close();

    }

}

要使用session驱动的话,需要设置SESSION_TYPE参数值为session驱动的名称,例如:

'SESSION_TYPE'=>'memcache', // 设置session类型为memcache

或者使用:

'SESSION_OPTIONS'=>array('type'=>'memcache'), //设置session类型为memcache

 


站长教学网 免责声明