本文实例讲述了PHP实现分布式memcache设置web集群session同步的方法。
php的session默认是文件存储:
session.save_handler = files
session.save_path = "/var/lib/php/session"
当做web集群,需要session同步时,将session存到分布式memcache来达到共享同步是个不错的办法
方法:
第1种:
session.save_handler = memcache
session.save_path = "tcp://192.168.20.193:11211,tcp://192.168.20.194:11211"
第2种:
在php文件中使用ini_set函数进行配置,适合无法修改配置文件的虚拟主机
?php
....
ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://192.168.20.193:11211,tcp://192.168.20.194:11211");
....
?>
重启web服务器
查看phpinfo
测试
192.168.20.193中的login.php
?php
session_start();
$_SESSION['login_time'] = time();
$_SESSION['username'] = 'test2';
$token=session_id();
echo $token;
//memache实现
$mem = new Memcache();
$mem->addServer('192.168.20.193',11211);
$mem->addServer('192.168.20.194',11211);
/*
//memached实现
$mem = new Memcached();
$servers = array(
array('192.168.20.193', 11211, 33),
array('192.168.20.194', 11211, 67)
);
$mem->addServers($servers);
*/
echo 'hr>';
print_r($mem->get($token));
?>
div>
a href="http://192.168.20.194/user.php?token=?php echo $token;?>" rel="external nofollow" target="_balnk">跳转到194网站的个人中心/a>
/div>
192.168.20.194中的user.php
?php
$mem = new Memcache();
$mem->addServer('192.168.20.193',11211);
$mem->addServer('192.168.20.194',11211);
$token=$_GET['token'];//获取传过来的token
print_r($mem->get($token));
?>
div>
a href="http://192.168.20.193/user.php?token=?php echo $token;?>" rel="external nofollow" target="_balnk">返回193网站的个人中心/a>
/div>
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php缓存技术总结》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《PHP错误与异常处理方法总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家PHP程序设计有所帮助。
您可能感兴趣的文章:- SpringBoot开发案例 分布式集群共享Session详解
- 如何使用Spring+redis实现对session的分布式管理
- spring boot整合redis实现shiro的分布式session共享的方法
- 浅谈ASP.NET Core中间件实现分布式 Session
- 详解springboot中redis的使用和分布式session共享问题
- 详解基于Spring Boot/Spring Session/Redis的分布式Session共享解决方案
- ASP.NET通过分布式Session提升性能
- 简单了解4种分布式session解决方案