在负载平衡设置中处理 $_SESSION 对象,PHP

Handling $_SESSION object in a load-balanced setup, PHP

我有一个设置,其中有一个主机以负载平衡的方式路由多个请求。我的后端使用 PHP。现在,我需要使用 $_SESSION 对象进行一些处理。

$_SESSION 可以在我有 3 个可以随时接收任何请求的后端服务器的情况下工作吗?

如果没有,有人可以提出处理此类情况的替代方法吗?

编辑:我知道我们可以将会话存储在数据库中并找到一种方法来跟踪它。但是,实时负载平衡生产场景中的问题是进入数据库的调用次数。这对我的表现来说真的很糟糕。我有点希望,我们可以在网络服务器级别处理这个问题。

不确定,如果可能的话,但是,如果两个网络服务器有某种像数据库那样的复制机制,那就太棒了。我什么都不用做。

如果不存在这样的东西,PHP应该修改以支持它。这实际上会使它成为一种非常健壮的语言。

我的建议是设置 PHP 来处理数据库中的会话(这样他们就可以独立于请求它的服务器访问会话数据)。

可以找到一个很好的教程 HERE

您可以将会话存储在内存缓存中,以便在服务器之间共享会话。

请查看文档here

查看内存缓存 (Is it recommended to store PHP Sessions in MemCache?) or REDIS (https://joshtronic.com/2013/06/20/redis-as-a-php-session-handler/)。

https://www.globo.tech/learning-center/php-memcached-instances-ubuntu-16/ 上有关于在 Ubuntu 上设置内存缓存的很好的教程。其中还包括使用 haproxy 作为负载均衡器(尽管您可能已经有了解决方案)。

也许读一读 https://blog.newtonhq.com/session-handling-for-1-million-requests-per-hour-68cdece15030