PHP store session with couchbase
如何用couchbase存储session
有两种常见方式:
1.采用memcache模式连接couchbase 只需两句修改:
- ini_set('session.save_handler', 'memcache');
- ini_set('session.save_path', 'tcp://couchbase_host:9999');
注意里面的9999是couchbase 里面创建的bucket的对外memcache端口,这种访问方式运行以memcache兼容的模式访问couchbase。
2.采用couchbase扩展添加一个sessionhandler如下:
- /****
- * php storage session with couchbase
- * by fushanlang@gmail.com
- */
- /***
- * SessionHandlerInterface is a internal interface only for PHP_VERSION>=5.4.0
- * so if interface_exists() false we need to define by yourself.
- */
- if (!interface_exists('SessionHandlerInterface')) {
- interface SessionHandlerInterface
- {
- public function close();
- public function destroy($session_id);
- public function gc($maxlifetime);
- public function open($save_path, $session_id);
- public function read($session_id);
- public function write($session_id, $session_data);
- }
- }
- /**
- * A reference implementation of a custom Couchbase session handler.
- */
- class CouchbaseSessionHandler implements SessionHandlerInterface
- {
- /**
- * Holds the Couchbase connection.
- */
- protected $_connection = null;
- /**
- * The Couchbase host and port.
- */
- protected $_host = null;
- /**
- * The Couchbase bucket name.
- */
- protected $_bucket = null;
- /**
- * The prefix to be used in Couchbase keynames.
- */
- protected $_keyPrefix = 'session:';
- /**
- * Define a expiration time of 10 minutes.
- */
- protected $_expire = 600;
- /**
- * Set the default configuration params on init.
- */
- public function __construct($host = '127.0.0.1:8091', $bucket = 'default')
- {
- $this->_host = $host;
- $this->_bucket = $bucket;
- }
- /**
- * Open the connection to Couchbase (called by PHP on `session_start()`)
- */
- public function open($savePath, $sessionName)
- {
- $this->_connection = new Couchbase($this->_host, '', '', $this->_bucket);
- return $this->_connection ? true : false;
- }
- /**
- * Close the connection. Called by PHP when the script ends.
- */
- public function close()
- {
- unset($this->_connection);
- return true;
- }
- /**
- * Read data from the session.
- */
- public function read($sessionId)
- {
- $key = $this->_keyPrefix . $sessionId;
- $result = $this->_connection->get($key);
- return $result ? : null;
- }
- /**
- * Write data to the session.
- */
- public function write($sessionId, $sessionData)
- {
- $key = $this->_keyPrefix . $sessionId;
- if (emptyempty($sessionData)) {
- return false;
- }
- $result = $this->_connection->set($key, $sessionData, $this->_expire);
- return $result ? true : false;
- }
- /**
- * Delete data from the session.
- */
- public function destroy($sessionId)
- {
- $key = $this->_keyPrefix . $sessionId;
- $result = $this->_connection->delete($key);
- return $result ? true : false;
- }
- /**
- * Run the garbage collection.
- */
- public function gc($maxLifetime)
- {
- return true;
- }
- }
- //usage example
- define('COUCHBASE_HOST_PORT','xxxxx:8091');
- define('COUCHBASE_BUCKET','session');
- if(class_exists('Couchbase')&&defined('COUCHBASE_HOST_PORT')&&defined('COUCHBASE_BUCKET')){
- $handler = new CouchbaseSessionHandler(COUCHBASE_HOST_PORT,COUCHBASE_BUCKET);
- if(version_compare(PHP_VERSION,'5.4.0')>=0){
- session_set_save_handler($handler,true);
- }else{
- session_set_save_handler(
- array($handler, 'open'),
- array($handler, 'close'),
- array($handler, 'read'),
- array($handler, 'write'),
- array($handler, 'destroy'),
- array($handler, 'gc'));
- }
- }
- session_start();
- 转自 http://www.fushanlang.com/blog/php-store-session-with-couchbase-2302/
PHP store session with couchbase的更多相关文章
- Node.js中的Session,不要觉得简单哦。
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...
- CI框架SESSION重写
这个是我平时用的是 PHP 自己的 Session 机制,是真正的 PHP Session,存储在服务器端,而不是用的 cookie 接口完全兼容于 CI 2.0.x 的 Session 类库,也就是 ...
- PHP超级全局变量——Session 变量
PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置.Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用. PHP Session 变量 当您运行一个 ...
- APP store 官方统计工具的常见的Q&A
Apple最近在iTunesConnect里最新发布了官方统计工具,提供了现有友盟统计平台和自有统计平台无法统计的数据,具有自己的独有特点,尤其是下面几个最让人头疼的流量分析转化,可以在App Ana ...
- Session fixation--wiki
http://en.wikipedia.org/wiki/Session_fixation In computer network security, session fixation attacks ...
- 关于web会话中的session过期时间的设置
关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...
- 转:cookie和session(二)——php应用
文章来自于:http://blog.csdn.net/half1/article/details/21650211 本文将介绍cookie在session在php中的基本用法. 1.cookie ...
- Asp.Net 禁用cookie后使用session
原文地址:http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/using-cookie-less-session-in-Asp-Net/ H ...
- C#如何设置session过期时间
1.操作系统 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉 右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...
随机推荐
- linux下使用多线程编写的聊天室
自从开始学linux网络编程后就想写个聊天室,一开始原本打算用多进程的方式来写,可是发觉进程间的通信有点麻烦,而且开销也大,后来想用多线程能不能实现呢,于是便去看了一下linux里线程的用法,实际上只 ...
- zsh下 home end 键失效的解决办法
我的环境是 centos 6.5 x64 安装 oh my zsh 后,home end 键失效,解决办法为在 .zshrc 里添加设置如下 #Rebind HOME and END to do th ...
- Java开发常用的在线工具
原文出处: hollischuang(@Hollis_Chuang) 作为一个Java开发人员,经常要和各种各样的工具打交道,除了我们常用的IDE工具以外,其实还有很多工具是我们在日常开发及学习过程中 ...
- Synchronized快
/* JAVA对于多线程的安全问题提供了专业的解决方式 就是同步代码块 synchronized(对象)//这个对象可以为任意对象 { 需要被同步的代码 } 对象如同锁,持有锁的线程可以在同步中执行 ...
- log4j输出日志到文件
输出端Appender Appender用来指定日志信息输出到哪个地方,可以同时指定多个输出目的地.Log4j允许将信息输出到许多不同的输出设备中,一个log信息输出目的地就叫做一个Appender. ...
- ajax基础1
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况 ...
- Python’s SQLAlchemy vs Other ORMs[转发 1]SQLObject
SQLObject SQLObject is a Python ORM that maps objects between a SQL database and Python. It is becom ...
- OpenSUSE 开启SSH 和网络设置
一.开启SSH 1.确认SSH包已安装. 2.确认防火墙没有拦截. 3.确认SSH服务已启动.4.确认SSH配置文件设置正确. 环境: SSH已安装,防火墙设置不清楚,SSH服务已启动,配置文件不清楚 ...
- HTML 教程延伸阅读:改变文本的外观和含义
很多标签都可以用来改变文本的外观,并为文本关联其隐藏的含义.总地来说,这些标签可以分成两类:基于内容的样式(content-based style)和物理样式(physical style). 基于内 ...
- ASP.NETMVC自定义错误页面真的简单吗?
Note:文章前半部分翻译自 http://benfoster.io/blog/aspnet-mvc-custom-error-pages ,着急的可直接看总结~ 如果你在设置asp.net mvc自 ...