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

被折叠的 条评论
为什么被折叠?



