在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 相关文章推荐
织梦模板标记简介
Mar 11 PHP
一周让你学会PHP 不错的学习资料
Feb 06 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
关于PHP实现异步操作的研究
Feb 03 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
May 17 PHP
Thinkphp整合阿里云OSS图片上传实例代码
Apr 28 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
May 23 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
Feb 15 PHP
PHP操作Redis常用命令的实例详解
Dec 23 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
Content-type 的说明
2006/10/09 PHP
基于PHP生成静态页的实现方法
2013/05/10 PHP
排序算法之PHP版快速排序、冒泡排序
2014/04/09 PHP
php实现简单的上传进度条
2015/11/17 PHP
基于ThinkPHP实现批量删除
2015/12/18 PHP
redis查看连接数及php模拟并发创建redis连接的方法
2016/12/15 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
javascript支持firefox,ie7页面布局拖拽效果代码
2007/12/20 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
2013/01/09 Javascript
jQuery实现带滚动导航效果的全屏滚动相册实例
2015/06/19 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
JS实现新浪微博效果带遮罩层的弹出框代码
2015/10/12 Javascript
jquery实现select选择框内容左右移动代码分享
2015/11/21 Javascript
原生Javascript插件开发实践
2017/01/09 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
two.js之实现动画效果示例
2017/11/06 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
如何解决webpack-dev-server代理常切换问题
2019/01/09 Javascript
解决layui追加或者动态修改的表单元素“没效果”的问题
2019/09/18 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python 实现顺序高斯消元法示例
2019/12/09 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
python使用smtplib模块发送邮件
2020/12/17 Python
高级3D打印市场:Gambody
2019/12/26 全球购物
一篇.NET面试题
2014/09/29 面试题
自我推荐书
2013/12/04 职场文书
优秀党员推荐材料
2014/12/18 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
错误码NET::ERR_CERT_DATE_INVALID证书已过期解决方法?
2022/07/07 数码科技