如何用couchbase存储session

有两种常见方式:
1.采用memcache模式连接couchbase 只需两句修改:

  1. ini_set('session.save_handler', 'memcache');
  2. ini_set('session.save_path', 'tcp://couchbase_host:9999');

注意里面的9999是couchbase 里面创建的bucket的对外memcache端口,这种访问方式运行以memcache兼容的模式访问couchbase。
2.采用couchbase扩展添加一个sessionhandler如下:

    1. /****
    2. * php storage session with couchbase
    3. * by fushanlang@gmail.com
    4. */
    5. /***
    6. * SessionHandlerInterface is a internal interface only for PHP_VERSION>=5.4.0
    7. * so if interface_exists() false we need to define by yourself.
    8. */
    9. if (!interface_exists('SessionHandlerInterface')) {
    10. interface SessionHandlerInterface
    11. {
    12. public function close();
    13. public function destroy($session_id);
    14. public function gc($maxlifetime);
    15. public function open($save_path, $session_id);
    16. public function  read($session_id);
    17. public function write($session_id, $session_data);
    18. }
    19. }
    20. /**
    21. * A reference implementation of a custom Couchbase session handler.
    22. */
    23. class CouchbaseSessionHandler implements SessionHandlerInterface
    24. {
    25. /**
    26. * Holds the Couchbase connection.
    27. */
    28. protected $_connection = null;
    29. /**
    30. * The Couchbase host and port.
    31. */
    32. protected $_host = null;
    33. /**
    34. * The Couchbase bucket name.
    35. */
    36. protected $_bucket = null;
    37. /**
    38. * The prefix to be used in Couchbase keynames.
    39. */
    40. protected $_keyPrefix = 'session:';
    41. /**
    42. * Define a expiration time of 10 minutes.
    43. */
    44. protected $_expire = 600;
    45. /**
    46. * Set the default configuration params on init.
    47. */
    48. public function __construct($host = '127.0.0.1:8091', $bucket = 'default')
    49. {
    50. $this->_host = $host;
    51. $this->_bucket = $bucket;
    52. }
    53. /**
    54. * Open the connection to Couchbase (called by PHP on `session_start()`)
    55. */
    56. public function open($savePath, $sessionName)
    57. {
    58. $this->_connection = new Couchbase($this->_host, '', '', $this->_bucket);
    59. return $this->_connection ? true : false;
    60. }
    61. /**
    62. * Close the connection. Called by PHP when the script ends.
    63. */
    64. public function close()
    65. {
    66. unset($this->_connection);
    67. return true;
    68. }
    69. /**
    70. * Read data from the session.
    71. */
    72. public function read($sessionId)
    73. {
    74. $key = $this->_keyPrefix . $sessionId;
    75. $result = $this->_connection->get($key);
    76. return $result ? : null;
    77. }
    78. /**
    79. * Write data to the session.
    80. */
    81. public function write($sessionId, $sessionData)
    82. {
    83. $key = $this->_keyPrefix . $sessionId;
    84. if (emptyempty($sessionData)) {
    85. return false;
    86. }
    87. $result = $this->_connection->set($key, $sessionData, $this->_expire);
    88. return $result ? true : false;
    89. }
    90. /**
    91. * Delete data from the session.
    92. */
    93. public function destroy($sessionId)
    94. {
    95. $key = $this->_keyPrefix . $sessionId;
    96. $result = $this->_connection->delete($key);
    97. return $result ? true : false;
    98. }
    99. /**
    100. * Run the garbage collection.
    101. */
    102. public function gc($maxLifetime)
    103. {
    104. return true;
    105. }
    106. }
    107. //usage example
    108. define('COUCHBASE_HOST_PORT','xxxxx:8091');
    109. define('COUCHBASE_BUCKET','session');
    110. if(class_exists('Couchbase')&&defined('COUCHBASE_HOST_PORT')&&defined('COUCHBASE_BUCKET')){
    111. $handler = new CouchbaseSessionHandler(COUCHBASE_HOST_PORT,COUCHBASE_BUCKET);
    112. if(version_compare(PHP_VERSION,'5.4.0')>=0){
    113. session_set_save_handler($handler,true);
    114. }else{
    115. session_set_save_handler(
    116. array($handler, 'open'),
    117. array($handler, 'close'),
    118. array($handler, 'read'),
    119. array($handler, 'write'),
    120. array($handler, 'destroy'),
    121. array($handler, 'gc'));
    122. }
    123. }
    124. session_start();
  1. 转自 http://www.fushanlang.com/blog/php-store-session-with-couchbase-2302/

PHP store session with couchbase的更多相关文章

  1. Node.js中的Session,不要觉得简单哦。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,博客地址为http://www.cnblogs.com/jasonnode/ .学习网站上有对应 ...

  2. CI框架SESSION重写

    这个是我平时用的是 PHP 自己的 Session 机制,是真正的 PHP Session,存储在服务器端,而不是用的 cookie 接口完全兼容于 CI 2.0.x 的 Session 类库,也就是 ...

  3. PHP超级全局变量——Session 变量

    PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置.Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用. PHP Session 变量 当您运行一个 ...

  4. APP store 官方统计工具的常见的Q&A

    Apple最近在iTunesConnect里最新发布了官方统计工具,提供了现有友盟统计平台和自有统计平台无法统计的数据,具有自己的独有特点,尤其是下面几个最让人头疼的流量分析转化,可以在App Ana ...

  5. Session fixation--wiki

    http://en.wikipedia.org/wiki/Session_fixation In computer network security, session fixation attacks ...

  6. 关于web会话中的session过期时间的设置

    关于web会话中的session过期时间的设置 1.操作系统: 步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉右键“属性”——〉主目录——〉配置— ...

  7. 转:cookie和session(二)——php应用

    文章来自于:http://blog.csdn.net/half1/article/details/21650211 本文将介绍cookie在session在php中的基本用法. 1.cookie   ...

  8. Asp.Net 禁用cookie后使用session

    原文地址:http://www.c-sharpcorner.com/UploadFile/deepak.sharma00/using-cookie-less-session-in-Asp-Net/ H ...

  9. C#如何设置session过期时间

    1.操作系统  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...

随机推荐

  1. Git撤销操作

      撤销操作的相关文章 http://www.linuxidc.com/Linux/2015-06/119350.htm   ——撤销已经修改,但是还没有添加到暂存区的操作: 解决方案: 有两种情形: ...

  2. MFC编程入门之二十六(常用控件:滚动条控件ScrollBar)

    回顾上一节,讲的是组合框控件Combo Box的使用.本节详解滚动条控件Scroll Bar的相关内容. 滚动条控件简介 滚动条大家也很熟悉了,Windows窗口中很多都有滚动条.前面讲的列表框和组合 ...

  3. ComboboxColumn取值——Winform中DataGridView中某一列使用下拉框

    ComboboxColumn的用法网上很多,绑定数据源都很简单,这里我遇到的是.不绑定数据源,即所有comobox的绑定都是固定的几个数据: 可以看到没有绑定任何数据源, ,在后台cs中取到下拉框的值 ...

  4. 冰球项目日志4-yjw

    小组讨论 我们组编程主要分成三个模块,各自负责自己的编程与测试. 杨静梧:确定击球算法编程.输入:冰球位置,速度大小方向:输出:撞击时冰球中心位置. 曹迦勒:确定击球手速度,位置.输入:撞击时冰球中心 ...

  5. MySql 创建表 插入数据!

    create table stu( id int, sname VARCHAR(20), sex VARCHAR(1), birthday DATETIME) insert into stu valu ...

  6. python3 不同目录间模块调用

    #Author by Andy #_*_ coding:utf-8 _*_ #__file__获取当前程序的相对路径 import os,sys #print(__file__) # os.path. ...

  7. 移动端弹性布局--flex

    目前,Flex布局,可以简便.完整.响应式地实现各种页面布局.而且,它已得到了所有浏览器的支持,这意味着,我们能很安全地使用这项功能. 如果你对弹性网页布局感兴趣,那可别错过flex这么好用的属性哦. ...

  8. 关于c#调用java中间件api的几个问题

    由于项目需要,做的c#客户端数据库连接串首先肯定不能写死的程序里(数据库很容易被攻击,我们的项目半年改了几次密码...) 放置在配置文件内,都可以看得到,最开始想法将配置文件加密,老师说加密过的文件还 ...

  9. JS学习笔记--轮播图效果

    希望通过自己的学习收获哪怕收获一点点,进步一点点都是值得的,加油吧!!! 本章知识点:index this for if else 下边我分享下通过老师教的方式写的轮播图,基础知识实现: 1.css代 ...

  10. PHP xml 转换为 array

    retrun json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), tru ...