负载平衡群集中的 PHP 会话 - 如何实现?
2022-08-30 10:24:29
好吧,所以我得到了一个完全罕见的负载平衡PHP网站的独特场景。令人沮丧的是 - 它以前不是负载平衡的。现在我们开始遇到问题...
目前唯一的问题是PHP会话。当然,一开始没有人想到这个问题,所以PHP会话配置保持其默认值。因此,两个服务器都有自己的一小堆会话文件,而不幸的是,用户将获得下一个抛出的请求抛给另一个服务器,因为该服务器没有他在第一个服务器上创建的会话。
现在,我一直在阅读PHP手册,了解如何解决这种情况。在那里,我发现了.(巧合的是,这个话题是关于SO的)整洁。除了我必须在网站的所有页面中调用此函数。未来页面的开发人员也必须记住一直调用它。感觉有点笨拙,更不用说可能违反了十几个最佳编码实践。如果我能翻转一些全局配置选项和Voilà,那会更好 - 会话都神奇地存储在数据库或内存缓存或其他东西中。session_set_save_handler()
关于如何做到这一点的任何想法?
添加:澄清 - 我希望这是标准解决方案的标准情况。仅供参考 - 我有一个可用的MySQL数据库。当然,一定有一些现成的代码可以解决这个问题吗?当然,我可以写我自己的会话保存东西,Greg指出的选项似乎很有希望 - 但这感觉就像重新发明轮子一样。
:P 添加 2:负载平衡是基于 DNS 的。我不确定这是如何工作的,但我想它应该是这样的东西。
添加 3:好的,我看到一个解决方案是使用选项在每个脚本中插入对的调用,并编写我自己的数据库持久化器,也许会抛出调用以获得更好的性能。很公平。
auto_prepend
auto_prepend
session_set_save_handler()
memcached
有没有一些方法可以避免我自己编码所有这些?喜欢一些著名且经过良好测试的PHP插件?
后来又增加了很多:这就是我最终的方式:如何在PHP + MySQL中正确实现自定义会话持久化器?
另外,我只是在所有页面中手动包含会话处理程序。