ThinkPHP3.1.3 Seesion 阿里云OCS

浏览:2182 最后更新:2015-12-07 16:57 分类:驱动
本类无BUG,加上即可用。
另外鄙视那些开源发BUG代码的人,还要说我抄袭。我鄙视你哦~爱用用,不用请……。不要乱BB!这么喜欢BB你发个无BUG的出来。烧饼玩意!


没有找到现成的3.1.3的阿里云Ocs驱动,只能自己动手了~
文件放到 ThinkPHP3.1.3/Extend/Driver/Session/SessionOcs.class.php    'SESSION_TYPE'=>'Ocs',       //名称
    'MEMCACHE_HOST'=>'1.ocs.aliyuncs.com', //连接地址
    'MEMCACHE_PORT'=>'11211',    //端口
    'MEMCACHE_USERNAME'=>'username',   //用户名
    'MEMCACHE_PASSWORD'=>'password',   //密码
以上配置中(地址,端口,用户名,密码)如果你是多个服务器你可以用英文的,号隔开

不成功的话我说明下..
检测环境是否安装memcached扩展 注意是memcached 不是 memcache

如果没有安装 大家可以百度下 php 安装memcached 扩展
别忘了在php.ini里面memcached.use_sasl = 1<?php 
// +----------------------------------------------------------------------
// | ThinkPHP [ OCS Session 驱动 ] 3.1.3
// +----------------------------------------------------------------------
// | Copyright (c) 2015-2016 http://www.c2567.com All rights reserved.
// +----------------------------------------------------------------------
// | Author: ChenSuiLong <496928838@qq.com>
// +----------------------------------------------------------------------

defined('THINK_PATH') or exit();
/**
 * 阿里云OCS方式Session驱动
 * @category   Extend
 * @package  Extend
 * @subpackage  Driver.Session
 * @author    ChenSuiLong <496928838@qq.com>
 */
class SessionOcs {
    /**
     * Session有效时间
     */
    protected $lifeTime      = ''; 
    /**
     * Memcached object
     */
    protected $Mem  = array(); 

    /**
     * 打开Session 
     * @access public 
     * @param string $savePath 
     * @param mixed $sessName  
     */
    public function open($savePath, $sessName) { 
                    $this->lifeTime = C('SESSION_EXPIRE')?C('SESSION_EXPIRE'):ini_get('session.gc_maxlifetime');
                        $options            = array(
                                'timeout'       => C('SESSION_TIMEOUT') ? C('SESSION_TIMEOUT') : 1,
                                'persistent'    => C('SESSION_PERSISTENT') ? C('SESSION_PERSISTENT') : 0
                        );
                $this->Mem       = new Memcached();
                //dump($this->Mem);exit;
                        $hosts              = explode(',', C('MEMCACHE_HOST'));
                        $ports              = explode(',', C('MEMCACHE_PORT'));
                        $usernames           = explode(',', C('MEMCACHE_USERNAME'));
                        $passwords           = explode(',', C('MEMCACHE_PASSWORD'));
                
                //循环缓存信息,主要是用于集群部署
                foreach ($hosts as $i=>$host) {
                                $port           = isset($ports[$i]) ? $ports[$i] : $ports[0];
                                $username       = isset($usernames[$i]) ? $usernames[$i] : $usernames[0];
                                $password       = isset($passwords[$i]) ? $passwords[$i] : $passwords[0];
                                $this->Mem->addServer($host, $port);
                    $this->Mem->setOption(Memcached::OPT_COMPRESSION, false); //关闭压缩功能
                    $this->Mem->setOption(Memcached::OPT_BINARY_PROTOCOL, true); //使用binary二进制协议
                    $this->Mem->setSaslAuthData($username,$password);      
                        }
                return true;
    } 

    /**
     * 关闭Session 
     * @access public 
     */
    public function close() {
        $this->gc($this->lifeTime); 
        $this->Mem->close();
        $this->Mem       = null;
        return true;
    } 

    /**
     * 读取Session 
     * @access public 
     * @param string $sessID 
     */
    public function read($sessID) { 
    return $this->Mem->get($this->sessionName.$sessID);
    } 

    /**
     * 写入Session 
     * @access public 
     * @param string $sessID 
     * @param String $sessData  
     */
    public function write($sessID,$sessData) { 
        return $this->Mem->set($this->sessionName.$sessID, $sessData, 0, $this->lifeTime);
    } 

    /**
     * 删除Session 
     * @access public 
     * @param string $sessID 
     */
    public function destroy($sessID) { 
        return $this->Mem->delete($this->sessionName.$sessID);
    } 

    /**
     * Session 垃圾回收
     * @access public 
     * @param string $sessMaxLifeTime 
     */
    public function gc($sessMaxLifeTime) { 
        return true;
    } 

    /**
     * 打开Session 
     * @access public 
     */
    public function execute() {
            session_set_save_handler(array(&$this,"open"), 
                                             array(&$this,"close"), 
                                             array(&$this,"read"), 
                                             array(&$this,"write"), 
                                             array(&$this,"destroy"), 
                                             array(&$this,"gc")); 
    }
}
评论( 相关
后面还有条评论,点击查看>>