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

来源:互联网 发布:存在主义 知乎 编辑:程序博客网 时间:2024/04/18 17:10

设置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;这是我们必须要考虑到的问题。



0 0
原创粉丝点击