memcache保存php的session 解决多服务器的session问题
PECL :: Package :: memcache 2.1.1 版本的 Changelog 中有一条:
- Added experimental session storage support. You can use memcached as session storage.
也就是可以直接用 memcache 来作 PHP 的 session.save_handler。
1. 安装 memcached,还是那套 ./configure; make; make install,注意 memcached 用 libevent 来作事件驱动,所以要先安装有 libevent。
2. 安装 pecl::memcache,用 pecl 命令行工具安装:
pecl install memcache
或直接从源码安装:
phpize
./configure
make
make install
将 php.ini 中 extension=memcache.so 打开,重启一下 apache,查看 phpinfo 中的 Registered save handlers 会有 files user memcache 这3个可用。
3. 修正配置文件,在 php.ini 中全局设置:
session.save_handler = memcache
session.save_path = tcp://127.0.0.1:11211
或者某个目录下的 .htaccess :
php_value session.save_handler memcache
php_value session.save_path tcp://127.0.0.1:11211
再或者在某个一个应用中:
ini_set(session.save_handler, memcache);
ini_set(session.save_path, tcp://127.0.0.1:11211);
应用多个 memcached server 时用逗号,隔开,并且和 Memcache::addServer() 文档中阐明的一样,可以带额外的参数persistent、weight、timeout、retry_interval 等等,类似这样的:tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2 。
4. 启动 memcached:
memcached -d -l 127.0.0.1 -p 11212 -m 128
5. 在程序中应用 memcache 来作 session 存储,用例子测试一下:
___FCKpd___6
6. 用 sessionid 去 memcached 里查询一下:
<?php
$memcache = memcache_connect(localhost, 11211);
var_dump($memcache->get(19216821213c65cedec65b0883238c278eeb573e077));
SESSION[TEST3] = time();
print <br><br>;
print session_id();
?>
会有看到
string(37) TEST|i:1177556731;TEST3|i:1177556881;
这样的输出,证明 session 正常工作。
用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器须要共用 session 时会比较方便,将这些服务器都配置成应用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。
memcache保存php的session 解决多服务器的session问题的更多相关文章
- php 跨域、跨子域,跨服务器读取session
1.跨子域和跨服务器解决方式 Session主要分两部分: 一个是Session数据,该数据默认情况下是存放在服务器的tmp文件下的,是以文件形式存在 另一个是标志着Session数据的Se ...
- session以及分布式服务器session共享
一.session的本质 http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你. 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录 ...
- 多服务器之间Session共享
原理:多个服务器间想共享session,就相当于共享取多台主机上的一个变量,所以共享的思路就是让大家都能读取变量,实现的方法可以通过将session保存到专门的一个服务器上,所有服务器都去请求数据,也 ...
- php 高级 多台web服务器共享session的方法
解决多台web服务器共享session的问题,至少有以下三种方法: 一.将本该保存在web服务器磁盘上的session数据保存到cookie中 即用cookie会话机制替代session会话机制, ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(七):解决用户上下文(Session)问题
从这篇文章中我们已经了解了微信公众平台消息传递的方式,这种方式有一个先天的缺陷:不同用户的请求都来自同一个微信服务器,这使得常规的Session无法使用(始终面对同一个请求对象,况且还有对方服务器Co ...
- PHP 实现多服务器共享 SESSION 数据
PHP 实现多服务器共享 SESSION 数据 2011 年 12 月 05 日评论暂缺 一.问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而一 ...
- Yii系列教程(四):使用Memcache保存会话
1环境准备 安装Memcached服务端: yum -y installmemcached.x86_64 安装PHP-Memcache扩展: yum -y installphp-pecl-memcac ...
- 【转】centos安装memcached+php多服务器共享+session多机共享问题
参考博文: centos安装memcached 源码安装 Yum安装Memcache Memcached内存分配优化及使用问题 <转>php+memcached 实现session共享 P ...
- redis来共享各个服务器的session,并同时通过redis来缓存一些常用的资源,加快用户获得请求资源的速度(转)
时间过得真快,再次登录博客园来写博,才发现距离上次的写博时间已经过去了一个月了,虽然是因为自己找了实习,但这也说明自己对时间的掌控能力还是没那么的强,哈哈,看来还需不断的努力啊!(这里得特别说明一下本 ...
随机推荐
- 自己写的中间层..基于通讯组件 RTC
273265088 我用原生Listbox与你的组件组合...创造了奇迹..搞了一个非常复杂的 UI .. 每个item高度 包括里面的元素 以及事件都是动态的搞了好几个小时感觉UI 非常完美比客户要 ...
- [iOS]如何删除工程里面用cocoapods导入的第三方库
如何在工程中卸载用cocoapods导入的第三方呢? 1. 打开工程所在文件夹 2. 打开Podfile文件 3. 删除不要的第三方导入命令 4. 然后在回到终端,然后进入到工程目录下,然后更新第三方 ...
- Hibernate常见错误整理
Hibernate常见错误合集 1.错误:object references an unsaved transient instance - save the transient instance ...
- android程序获取WIFI的IP地址和MAC地址
转自:http://my.oschina.net/chenj/blog/68680 近日在鼓捣这玩意,拿出来大家分享一下,代码比较简单,如果有不懂的再问 <Button android:id=& ...
- HighCharts开发说明
一.HighCharts开发说明: HighCharts开发实际上配置HighCharts每个部分,比如配置标题(title),副标题(subtitle)等,其中每个部分又有更细的参数配置,比如标题下 ...
- Jquery正则表达式公式.例子
1.非负整数 /^\d+$/ 2.正整数 /^[0-9]*[1-9][0-9]*$/ 3.非正整数 /^((-\d+)|(0+))$/ ...
- php pod
//PDO:数据访问抽象层 //dsn:数据源: //带有事务功能: $dsn = "mysql:host=localhost;dbname=mydb"; ——建立数据源 //造p ...
- 《Linux内核设计与实现》读书笔记(十)- 内核同步方法【转】
转自:http://www.cnblogs.com/wang_yb/archive/2013/05/01/3052865.html 内核中提供了多种方法来防止竞争条件,理解了这些方法的使用场景有助于我 ...
- ubuntu下设置环境变量的三种方法【转】
转自:http://blog.chinaunix.net/uid-26916352-id-3208366.html 通常设置环境变量有三种方法: 一.临时设置 export PATH=/home/ya ...
- Android 判断用户2G/3G/4G移动数据网络
Android 判断用户2G/3G/4G移动数据网络 在做 Android App 的时候,为了给用户省流量,为了不激起用户的愤怒,为了更好的用户体验,是需要根据用户当前网络情况来做一些调整的,也可以 ...