您的位置:首页 > 数据库 > Memcache

php使用 memcache 来存储 session 方法总结

2014-04-08 01:17 1026 查看
设置session用memcache来存储

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

session.save_handler = memcache

session.save_path = "tcp://192.168.100.11:11211"

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

php_value session.save_handler "memcache"

php_value session.save_path "tcp://192.168.100.11:11211"

方法III: 再或者在某个一个应用中,比如cache的文件中配置

ini_set("session.save_handler", "memcache");

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

使用多个 memcached server 时用逗号","隔开

类似这样的:"tcp://192.168.100.11:11211,tcp://192.168.100.10:11211" 。

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

ini_set("session.save_handler", "memcached"); // 是memcached不是memcache

ini_set("session.save_path", "192.168.100.11:11211"); // 千万记住不要加入tcp://

这里我们看看两种实际的两种方法

一、正常的读取

<?php
session_start();
if (!isset($_SESSION['OKHQB'])) {
$_SESSION['OKHQB'] = time();
}

$_SESSION['360HQB'] = time();

print $_SESSION['OKHQB'];
print "<br><br>";
print $_SESSION['360HQB'];
print "<br><br>";
print session_id();
?>


二、从cache里面读取

<?php
$memcache = memcache_connect('192.168.100.11', 11211);
var_dump($memcache->get('OKHQB'));
$memcache->set('OKHQB', 'hello okhqb');
var_dump($memcache->get('OKHQB'));
?>


这里可以解决一个很大的问题

如:现在有一个电商网站,会员登录或者页面之间的交互涉及到两个页面,一是PHP、二是JSP页面;它们有不同的服务器,如果需要统一路径,统一会员

就会涉及到怎么样去找到一个公用的KEY

将session_id存储到客户端cookie中

这样的好处是,我们可以将session_id当作一个key值;将会员信息做值存储在cache中。不管任何渠道都通过key值去获取会员信息;因此,我们在处理不管是PHP页面,还是JSP页面都是读取同一个值,就可以达到不同系统,不同页面之间的共同点。

但是这样做也会造成一个问题,当session_id发生变化,使的我们明明已经登录了,但是提示的还是未登录;这时候必须退出重新登录,重新生成key;这是我们必须要考虑到的问题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: