<?php


namespace Think\Session\Driver;





class Memcache {


	protected $lifeTime     = 3600;


	protected $sessionName  = '';


	protected $handle       = null;





    /**


     * 打开Session 


     * @access public 


     * @param string $savePath 


     * @param mixed $sessName  


     */


	public function open($savePath, $sessName) {


		$this->lifeTime     = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : $this->lifeTime;


		// $this->sessionName  = $sessName;


        $options            = array(


            'timeout'       => C('SESSION_TIMEOUT') ? C('SESSION_TIMEOUT') : 1,


            'persistent'    => C('SESSION_PERSISTENT') ? C('SESSION_PERSISTENT') : 0


        );


		$this->handle       = new \Memcache;


        $hosts              = explode(',', C('MEMCACHE_HOST'));


        $ports              = explode(',', C('MEMCACHE_PORT'));


        foreach ($hosts as $i=>$host) {


            $port           = isset($ports[$i]) ? $ports[$i] : $ports[0];


            $this->handle->addServer($host, $port, true, 1, $options['timeout']);


        }


		return true;


	}





    /**


     * 关闭Session 


     * @access public 


     */


	public function close() {


		$this->gc(ini_get('session.gc_maxlifetime'));


		$this->handle->close();


		$this->handle       = null;


		return true;


	}





    /**


     * 读取Session 


     * @access public 


     * @param string $sessID 


     */


	public function read($sessID) {


        return $this->handle->get($this->sessionName.$sessID);


	}





    /**


     * 写入Session 


     * @access public 


     * @param string $sessID 


     * @param String $sessData  


     */


	public function write($sessID, $sessData) {


		return $this->handle->set($this->sessionName.$sessID, $sessData, 0, $this->lifeTime);


	}





    /**


     * 删除Session 


     * @access public 


     * @param string $sessID 


     */


	public function destroy($sessID) {


		return $this->handle->delete($this->sessionName.$sessID);


	}





    /**


     * Session 垃圾回收


     * @access public 


     * @param string $sessMaxLifeTime 


     */


	public function gc($sessMaxLifeTime) {


		return true;


	}


}


