关于PHP多服务器识别cookie的问题

是这样的,我们有多台服务器做负载均衡,跑的代码都一样,域名也一样,如果在浏览器设置了cookie,浏览器访问不同的服务器,cookie还会正确的识别吗?

阅读 2.4k
2 个回答

可以的。但是如果保存有SESSION_ID 就不行了。

PHP的session默认是存文件的, 所以不支持分布式服务器.

解决方案为使用redis作session, 多台服务器共用一个redis session库

  1. 安装redis-server 及 php-redis扩展

  2. 配置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序列化会略提升些性能

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题