创建一个自定义会话处理程序

创建一个自定义会话处理程序在CakePHP是直截了当的。在这个示例中,我们将创建一个会话处理程序存储会话缓存(apc)和数据库。这给了我们最好的快速IO apc,无需担心会话缓存已满时蒸发。
首先我们需要创建自定义类,把它放在app /模型/数据源/会议/ ComboSession.php。类应该类似:
App::uses('DatabaseSession', 'Model/Datasource/Session');

class ComboSession extends DatabaseSession implements CakeSessionHandlerInterface {
    public $cacheKey;

    public function __construct() {
        $this->cacheKey = Configure::read('Session.handler.cache');
        parent::__construct();
    }

    // read data from the session.
    public function read($id) {
        $result = Cache::read($id, $this->cacheKey);
        if ($result) {
            return $result;
        }
        return parent::read($id);
    }

    // write data into the session.
    public function write($id, $data) {
        $result = Cache::write($id, $data, $this->cacheKey);
        if ($result) {
            return parent::write($id, $data);
        }
        return false;
    }

    // destroy a session.
    public function destroy($id) {
        Cache::delete($id, $this->cacheKey);
        return parent::destroy($id);
    }

    // removes expired sessions.
    public function gc($expires = null) {
        return Cache::gc($this->cacheKey) && parent::gc($expires);
    }
}
我们班扩展内置DatabaseSession所以我们不必复制所有的逻辑和行为。我们将每个操作缓存操作。这让我们从快速缓存获取会话,而不需要担心会发生什么当我们填充缓存。使用这个会话处理程序也简单。在你的核心。php让会话块看起来像下面的:
Configure::write('Session', array(
    'defaults' => 'database',
    'handler' => array(
        'engine' => 'ComboSession',
        'model' => 'Session',
        'cache' => 'apc'
    )
));

// Make sure to add a apc cache config
Cache::config('apc', array('Engine' => 'Apc'));

现在我们的应用程序将开始使用我们的自定义会话处理程序的阅读和写作会话数据。
class CakeSession


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值