NO IMAGE

別忘了在php.ini裡面

  1. memcached.use_sasl = 1

複製到/ThinkPHP/Library/Think/Session/Driver 目錄下

    ‘MEMCACHE_HOST’=>’1.ocs.aliyuncs.com’, //連線地址
    ‘MEMCACHE_PORT’=>’11211’,    //埠
    ‘MEMCACHE_USERNAME’=>’username’,   //使用者名稱
    ‘MEMCACHE_PASSWORD’=>’password’,   //密碼
    ‘SESSION_TYPE’=>’Ocs’,       //名稱

<?php 

// ———————————————————————-
// | ThinkPHP [ OCS Session 驅動 ] 3.1.3
// ———————————————————————-
// | Copyright (c) 2015-2016 http://www.c2567.com All rights reserved.
// ———————————————————————-
// | Author: ChenSuiLong <[email protected]>
// ———————————————————————-

defined(‘THINK_PATH’) or exit();
/**
 * 阿里雲OCS方式Session驅動
 * @category   Extend
 * @package  Extend
 * @subpackage  Driver.Session
 * @author    ChenSuiLong <[email protected]>
 */
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”)); 
}
}