当时方位: 主页 > Linux学院 > 程序设计 > PHP > 怎么将PHP session信息缓存到memcached里边

怎么将PHP session信息缓存到memcached里边

2014-08-12 17:56 来历:阿里云 作者:余汶龙 人气指数: 我要谈论
一、场景介绍
 
用户在运用PHP建立网站时,会把一些信息存放在$_SESSION大局变量里,能够很便利的存取。在PHP的ini配备文件里边供给了[Session]相关配备,能够支撑将信息存到文件或memcached里边。由配备项session.save_handler = memcached决议。大多数场景,该session数据并不需求耐久化,且为了提高网站功能,会挑选将session信息缓存到memcached里边。
 
二、问题
 
现在问题来了,已知阿里云OCS是完成了规范memcached协议的缓存,用户一方面为了削减内存占用,一方面削减对memcached的保护,期望将session的存储从自建的memcached迁移到OCS上面,且不期望改写代码。切换过程中遇到了问题,因此有了这篇文章,期望能帮到咱们。
 
首要澄清OCS和自建memcached的差异,他们都完成了规范memcached协议。但OCS是分布式集群一致对外供给服务,完成了负载均衡且无单点故障,用户可自在动态弹性调整配备且无需重启服务。既然是对外供给服务,就有相应的安全机制,如白名单、流控、账号暗码鉴权。这儿比照自建memcached,最重要的差异便是“账号暗码鉴权”,由于大多数用户自建memcached是不需求设置账号暗码的,跟OCS比就少了SASL鉴权流程。那么用户将session的存储从自建的memcached迁移到OCS上面,就需求在php.ini中配备账号暗码。
 
三、处理
 
1、在老版别的php memcached扩展中无法支撑,需求晋级php memcached扩展至2.2.0版别。从头依照阿里云OCS官网教程http://help.aliyun.com/view/11108324_13703944.html?spm=5176.7150518.1996836753.9.OZnEq0 编译扩展。过程如下:
 
wget http://pecl.php.net/get/memcached-2.2.0.tgz
 
tar  zxvf  memcached-2.2.0.tgz
 
cd memcached-2.2.0
 
phpize
 
./configure –with-libmemcached-dir=/usr/local/libmemcached –enable-memcached-sasl
 
make
 
make install
 
2、找到刚晋级memcached.so,stat指令确定下是否更新,留意下modify时刻
 
点击这儿给我发消息
 
3、修正php.ini配备
 
3.1 session段
 
找到[Session]阶段,修正存储引擎为:
 
session.save_handler = memcached(留意是带d扩展)
 
修正存储地址,即OCS拜访地址为:
 
session.save_path = “be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com:11211″(留意带d扩展,则前面不必加tcp://,不带d的扩展需求加)
 
修正缓存到memcached的key的时刻
 
session.gc_maxlifetime = 1440(单位是秒,强烈建议有必要设置一个合理时刻,以确保OCS一直只缓存抢手数据)
 
3.2 memcached段
 
在php.ini的大局段,建一个独自阶段[memcached],然后在空白当地参加下面配备
 
[memcached]
 
memcached.use_sasl = On
 
memcached.sess_binary = On
 
memcached.sess_sasl_username = “your_ocs_name”
 
memcached.sess_sasl_password = “your_ocs_password”
 
memcached.sess_locking = Off
 
装置过程结束,上述关于memcached段和Session段其他有用参数,参阅链接如下:
 
http://php.net/manual/en/memcached.configuration.php
 
http://php.net/manual/en/session.configuration.php
 
接下来是测验是否收效。
 
四、测验
 
写测验代码如下session.php
 
<?php
 
session_start();
 
$sn = session_id();
 
echo “session id:”.$sn.”\n”;
 
$_SESSION["ocs_key"]=”session_value”;
 
echo “session:”.$_SESSION["ocs_key"].”\n”;
 
?>
 
输出如下:
 
session id:ttrct9coa2q62r2sodlq4qf376
 
session:session_value
 
测验代码get.php去从OCS获取方才session.php经过session写入的数据
 
<?php
 
$memc = new Memcached();
 
$memc->setOption(Memcached::OPT_COMPRESSION, false);
 
$memc->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
 
$memc->addServer(“be6b6b8221cc11e4.m.cnhzalicm10pub001.ocs.aliyuncs.com”, 11211);
 
$memc->setSaslAuthData(“your_ocs_name”, “your_ocs_password”);
 
echo $memc->get(“memc.sess.key. ttrct9coa2q62r2sodlq4qf376″);
 
/*留意这儿的key是有前缀的,由php.ini中memcached.sess_prefix字段决议,默认值为“memc.sess.key.”。然后再拼接上面打出来的sessionid“ttrct9coa2q62r2sodlq4qf376”即可。*/
 
?>
 
该代码输出如下:
 
    ocs_key|s:13:”session_value”;
 
即PHP SESSION现已成功写入OCS。
为您引荐: PHP memcached Session 信息缓存
咱们感兴趣的内容
小同伴独爱的新闻
小同伴还重视了以下信息
小同伴重视的焦点

小同伴都在重视的抢手词

新服 缤纷活动 帆海世纪 芈月传 暗黑道具 萌乐网 苹果发布会 最新谍照 三国令 剑雨江湖 怎样修炼战骑 页游 怎样修炼同伴 木甲国际 仙侠道2 推黑科技 页游形式 武圣试炼场 街机玩法 蓝月传奇 个人BOSS玩法 哥们网 九阴绝学 仗剑出鞘 全新形式 范伟打天下 全新元神玩法 七大神兵简介 新手攻略 跑腿使命 门派五行 城战礼包 页游界 泥石流 傅园慧 经典网页游戏 耐玩 盘点 玉石攻略 提高人物 大黑 实装特点 神兵攻略 闻名莽荒 莽荒纪 手持神兵 土豪梦 万世 开学清单 财富赚不断 天书国际 大黑游戏 资源战场 ppwan 天问 激战 全国大战 雄霸一方 新增宠物技术 肯定小能手 花千骨 三尾章鱼 风色轨道 双枪手 弑之神 缤纷好礼 惊喜六重连 帮会 中秋福利 克己月饼 九阴真经 玩家 五周年留念 留念银币 名动三界 新服资料片 fun88体育 勇战妖魔 邪恶势力 上古降魔 老司机玩法 坐骑揭秘 黑科技 竞技场攻略 铁血皇城 披风玩法 书剑恩仇录 配备强化攻略 户外BOSS玩法 全网曝光 赤壁传说 半回合制国 ACT 奇珍商城 热血战歌 传奇瑰宝抽奖 打开方式 门徒 门徒获取玩法 三大萌宠简介