是这样的,我们有多台服务器做负载均衡,跑的代码都一样,域名也一样,如果在浏览器设置了cookie,浏览器访问不同的服务器,cookie还会正确的识别吗?
是这样的,我们有多台服务器做负载均衡,跑的代码都一样,域名也一样,如果在浏览器设置了cookie,浏览器访问不同的服务器,cookie还会正确的识别吗?
PHP的session默认是存文件的, 所以不支持分布式服务器.
解决方案为使用redis作session, 多台服务器共用一个redis session库
安装redis-server 及 php-redis扩展
配置php.ini
# 启用redis存放session
session.save_handler = redis # 默认为files
# redis连接配置
# RedisServer: redis服务器地址,如IP
# database = redis数据库, 默认为0
# prefix = 存入redis库的key前缀, 此为PHPSESS_
# timeout = 连接超时(秒)
# persistent = 是否使用长连接
session.save_path = "tcp://RedisServer:6379?database=9&prefix=PHPSESS%3A&timeout=2.5&persistent=1"
至于session和cookie的使用, 平时php代码里该怎么用还是怎么用
另外, 有个序列化的性能, php默认的序列化性能不是很好
建议安装 php igbinary扩展, 然后
# session使用igbinary序列化, 默认为php
session.serialize_handler = igbinary
同理, 如果你有PHP中使用redis或memcached, 启用igbinary序列化会略提升些性能
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答716 阅读✓ 已解决
2 回答2.3k 阅读
1 回答687 阅读✓ 已解决
可以的。但是如果保存有SESSION_ID 就不行了。