在php中设置session用memcache来存储的方法总结


Posted in PHP onJanuary 14, 2016

memcached提供了一个自定义的session处理器可以被用于存储用户session数据到memcached服务端。一个完全独立的memcached实例将会在内部使用,因此如果需要您可以设置一个不同的服务器池。session的key被存储在前缀memc.sess.key.之下,因此, 如果你对session和通常的缓存使用了同样的服务器池,请注意这一点。译注:另外一个session和通常缓存分离的原因是当通常的缓存占满了memcached服务端后,可能会导致你的session被从缓存中踢除,导致用户莫名的掉线。

session.save_handler string

设置为memcached开启memcached的session处理器。

session.save_path string

定义一个逗号分隔的hostname:port样式的session缓存服务器池,例如: "sess1:11211, sess2:11211".

方法I: 在 php.ini 中全局设置

session.save_handler = memcache 
session.save_path = "tcp://127.0.0.1:11211"

方法II: 某个目录下的 .htaccess

php_value session.save_handler "memcache" 
php_value session.save_path "tcp://127.0.0.1:11211"

方法III: 再或者在某个一个应用中

ini_set("session.save_handler", "memcache"); 
ini_set("session.save_path", "tcp://...:");

使用多个 memcached server 时用逗号","隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数"persistent"、"weight"、"timeout"、"retry_interval" 等等,类似这样的:"tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2" 。

如果安装的PECL是memcached(依赖libmemcached库的那个扩展),则配置应为

ini_set("session.save_handler", "memcached"); // 是memcached不是memcache 
ini_set("session.save_path", "127.0.0.1:11211"); // 不要tcp:[/b]

代码例子(不依赖libmemcached库的那个)

<?php 
session_start(); 
if (!isset($_SESSION['TEST'])) { 
$_SESSION['TEST'] = time(); 
} 
$_SESSION['TEST'] = time(); 
print $_SESSION['TEST']; 
print "<br><br>"; 
print $_SESSION['TEST']; 
print "<br><br>"; 
print session_id(); 
?>

用 sessionid 去 memcached 里查询一下:

<?php 
$memcache = memcache_connect('localhost', ); 
var_dump($memcache->get('ccedecbceebe')); 
$memcache->set('aaaa', 'hello everyone'); 
var_dump($memcache->get('aaaa')); 
?>

会看到

string(37) "TEST|i:1177556731;TEST3|i:1177556881;"

这样的输出,证明 session 正常工作。

下面通过两种用法实例给大家介绍下php中使用memcached来存储session

一、

ini_set("session.save_handler", "memcache");
ini_set("session.save_path","tcp://127.0.0.1:11211");

多个memcached

ini_set("session.save_path","tcp://127.0.0.1:11211,tcp://127.0.0.1:11211");

二、

ini_set("session.save_handler", "memcached");
ini_set("session.save_path","...:");

多个memcached

ini_set("session.save_path","127.0.0.1:11211,127.0.0.1:11211");
PHP 相关文章推荐
php 获取本机外网/公网IP的代码
May 09 PHP
php中判断字符串是否全是中文或含有中文的实现代码
Sep 16 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
PHP二维数组排序的3种方法和自定义函数分享
Apr 09 PHP
PHP实现数组递归转义的方法
Aug 28 PHP
PHP中读取文件的几个方法总结(推荐)
Jun 03 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
老生常谈PHP面向对象之解释器模式
May 17 PHP
PHP API接口必备之输出json格式数据示例代码
Jun 27 PHP
php检测mysql表是否存在的方法小结
Jul 20 PHP
PHP+AJAX 投票器功能
Nov 11 PHP
thinkphp实现图片上传功能
Jan 13 #PHP
PHP实现伪静态方法汇总
Jan 13 #PHP
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
Jan 12 #PHP
优化WordPress中文章与评论的时间显示
Jan 12 #PHP
win平台安装配置Nginx+php+mysql 环境
Jan 12 #PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 #PHP
深入解析WordPress中加载模板的get_template_part函数
Jan 11 #PHP
You might like
php正则表达式(regar expression)
2011/09/10 PHP
深入php多态的实现详解
2013/06/09 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
2016/02/22 PHP
PHP levenshtein()函数用法讲解
2019/03/08 PHP
Thinkphp5.0框架视图view的循环标签用法示例
2019/10/12 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
Prototype Class对象学习
2009/07/19 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
纯JS实现的批量图片预览加载功能
2011/08/14 Javascript
js实现跨域的方法实例详解
2015/06/24 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
2016/05/26 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
easyui取消表单实时验证,提交时统一验证的简单实例
2016/11/07 Javascript
jQuery与JavaScript节点创建方法的对比
2016/11/18 Javascript
Node.js的特点详解
2017/02/03 Javascript
详解angularjs结合pagination插件实现分页功能
2017/02/10 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
nodejs实现百度舆情接口应用示例
2020/02/07 NodeJs
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
封装Vue Element的table表格组件的示例详解
2020/08/19 Javascript
浅谈Python单向链表的实现
2015/12/24 Python
Python使用while循环花式打印乘法表
2019/01/28 Python
详解Python基础random模块随机数的生成
2019/03/23 Python
python中aioysql(异步操作MySQL)的方法
2019/04/11 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
大学生个人推荐信范文
2013/11/25 职场文书
教师试用期自我鉴定
2014/02/12 职场文书
法定代表人身份证明书
2014/09/10 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
Java8中接口的新特性使用指南
2021/11/01 Java/Android