同步 - PHP 实现多台服务器共用SESSION方案?
天蓬老师
天蓬老师 2017-04-10 15:56:15
[PHP讨论组]

题目:

如何实现多台服务器共用SESSION?

回答:

方案将SESSION保存到数据库,不同主机可以去读SESSION数据库来判断是否登录在线

反问:

如果并发访问很大的情况下,如何保证SESSION正常读取?

这是一个面试题,回答了使用数据库来保存SESSION的时候,面试官不满意,我自己的思路是将这个题目思考为多个分站如何公用SESSION,比如顶级域和多子域。所以为了同步方便,想到的是数据库存放,但是如何处理并发量很高的情况?(弃用DB存放SESSION换其他方案?)

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(6)
ringa_lee

sessionid之类的客户端标志,做一致性哈希,保证每次访问到同一台机器,对n个客户端来说,祈祷分流作用,这样行不行.
要琢磨考官问的什么,然后给出"正确"答案,真挺难的

大家讲道理

的确,redis,memcache是不二的选择,原因是他们是内存数据库,硬盘数据库的瓶颈就是硬盘Io。两者之间我比较推荐redis,因为它支持的数据格式多,而且扩展强大,比如持久化。

黄舟

用memcached。

session不是持久化存储,跟rdbs的差异还是挺大的,但跟memcached很像。

至于sessionid,可以用应用里的uid来代替,需要手动管理。

高洛峰

memcache 是最佳选择 用memcache实现session的功能。

大家讲道理

redis可以存储啊。

高洛峰

SESSION同步 一致性 单点登录问题
方案一:存数据库(PHP SESSION默认有悲观锁,会串行执行请求)
方案二:存缓存+分布式+主从(复制从节点)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号