在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 相关文章推荐
文件上传的实现
Oct 09 PHP
生成php程序的php代码
Apr 07 PHP
Snoopy类使用小例子
Apr 15 PHP
PHP中集成PayPal标准支付的实现方法分享
Feb 06 PHP
PHP SOCKET编程详解
May 22 PHP
php实现分页显示
Nov 03 PHP
在WordPress中实现评论头像的自定义默认和延迟加载
Nov 24 PHP
Zend Framework教程之视图组件Zend_View用法详解
Mar 05 PHP
php arsort 数组降序排序详细介绍
Nov 17 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
Laravel推荐使用的十个辅助函数
May 10 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应用提速面面观
2006/10/09 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
php 判断过去离现在几年的函数(实例代码)
2016/11/15 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
jquery1.4 教程二 ajax方法的改进
2010/02/25 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
JQuery实现表格动态增加行并对新行添加事件
2014/07/30 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
基于JavaScript创建动态Dom
2015/12/08 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
Vue2.0用户权限控制解决方案的示例
2018/02/10 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
JavaScript命名空间模式实例详解
2019/06/20 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python验证企业工商注册码
2015/10/25 Python
Python性能提升之延迟初始化
2016/12/04 Python
python2.7 json 转换日期的处理的示例
2018/03/07 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
如何使用python操作vmware
2019/07/27 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
浅谈对pytroch中torch.autograd.backward的思考
2019/12/27 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
python 实现客户端与服务端的通信
2020/12/23 Python
Vinatis德国:法国领先的葡萄酒邮购公司
2020/09/07 全球购物
北京天润融通.net面试题笔试题
2012/02/20 面试题
Hibernate持久层技术
2013/12/16 面试题
应届生求职信
2014/05/31 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书