gpt4 book ai didi

负载平衡集群中的 PHP session - 怎么样?

转载 作者:IT王子 更新时间:2023-10-29 00:50:21 25 4
gpt4 key购买 nike

好吧,我已经得到了这种非常罕见的负载平衡 PHP 网站的独特场景。令人遗憾的是——它以前不是负载平衡的。现在我们开始遇到问题...

目前唯一的问题是 PHP session 。一开始自然没有人想到这个问题,所以 PHP session 配置保留为默认值。因此,两个服务器都有自己的小 session 文件存储,不幸的是将下一个请求抛给另一个服务器的用户,因为它没有他在第一个服务器上创建的 session 。

现在,我一直在阅读有关如何解决这种情况的 PHP 手册。在那里我发现了 session_set_save_handler() 的好函数。 (而且,巧合的是,this topic 在 SO 上)整洁。除了我必须在网站的所有页面中调用此函数。 future 页面的开发人员也必须记住始终调用它。感觉有点笨拙,更不用说可能违反了十几个最佳编码实践。如果我可以翻转一些全局配置选项和 Voilà - session 都神奇地存储在数据库或内存缓存或其他东西中,那就更好了。

关于如何做到这一点有什么想法吗?


已添加:澄清一下 - 我希望这是标准解决方案的标准情况。仅供引用 - 我有一个可用的 MySQL 数据库。肯定有一些现成的代码可以解决这个问题吗?我当然可以编写自己的 session 保存内容和 Greg 指出的 auto_prepend 选项看起来很有希望——但这感觉就像重新发明轮子。 :P
添加 2: 负载平衡是基于 DNS 的。我不确定它是如何工作的,但我想它应该类似于 this。 .
添加 3: 好的,我看到一个解决方案是使用 auto_prepend 选项在每个脚本中插入对 session_set_save_handler() 的调用并编写我的自己的数据库持久化器,可​​能会调用 memcached 以获得更好的性能。很公平。

还有什么方法可以避免我自己编写所有这些代码吗?喜欢一些著名且经过充分测试的 PHP 插件吗?

添加了很多很多以后: 这是我最后走的路:How to properly implement a custom session persister in PHP + MySQL?

此外,我只是在所有页面中手动包含了 session 处理程序。

最佳答案

您可以设置 PHP 来处理数据库中的 session ,因此您的所有服务器共享相同的 session 信息,因为所有服务器都使用相同的数据库。

一个很好的教程可以是found here .

关于负载平衡集群中的 PHP session - 怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/994935/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com