我有两个在 RHEL 5.7 上运行 PHP 的 httpd 服务器。最初,我使用托管在第三台服务器上的通用 NFS 共享在服务器之间共享 PHP 会话。这导致 httpd 服务器速度变慢,并最终挂断。
在多个 httpd 前端服务器之间共享 PHP 会话数据的最佳实践是什么?
供应商建议我通过 cookie 或源 IP 利用负载平衡连接持久性,但我担心其中一个 httpd 服务器发生故障会导致用户丢失会话数据并被注销(例如)。
有什么想法吗?
谢谢!
答案1
要么把你的会话放入你的(希望是复制的)数据库,要么使用复制的memcached为您的会话提供服务器。
答案2
这是我为不同客户使用的产品的衍生产品:
它目前基于 ZF,但可以轻松扩展以与其他框架配合使用。这个想法是使用 Memcache 和 MySQL 作为备份。由于它使用ext/memcache
(很多人建议坚持使用 2.x-stable),我可以添加多个服务器,让扩展在它们之间复制数据。
不能 100% 确定这是否是最好的想法,您也可以在用户空间代码中实现相同的效果。
答案3
一个可以测试的轻量级选项是缓存。但阅读它的简介,在多服务器环境中使用 $_SESSION 时存在锁定问题。