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

本文详细介绍了如何在PHP中利用Memcache作为Session存储方式,实现跨服务器的会话共享,适用于多服务器部署场景。通过设置Memcache的handler和path,文章还演示了如何在特定目录下的.htaccess或应用配置文件中进行配置,并提供了实例代码。此外,文章还讨论了在不同服务器间使用多个Memcached实例的方法,以及如何将session_id存储到客户端cookie以实现不同系统间的会话同步。最后,文章强调了这种方法在解决电商网站会员登录及页面交互问题上的优势与潜在挑战。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值