【发布时间】:2012-12-06 10:19:36
【问题描述】:
我正在使用负载均衡器后面的几个 Web 服务器,我可以启用粘性会话以将用户保留到一个特定的 Web 服务器 - 这会起作用。
我一直在阅读有关 PHP Sessions 和 MemCache 的信息。我必须说我读到的内容有点令人困惑,因为有些页面说这是个好主意,而另一些则相反。
问题:
- 是否可以在内存缓存中保留 php 会话?
- 使用粘性会话而不是内存缓存更好吗?
- memcache 中的 php 会话有什么问题 - 注意:我可以获得足够的缓存(亚马逊因此可扩展)。
【问题讨论】:
-
第三个选项是将会话存储在数据库中。您可以使用 session_set_save_handler() 方法:php.net/manual/en/function.session-set-save-handler.php。您将获得更容易扩展的性能优势。
-
永远不要使用数据库作为会话处理程序。这是来自@Jabari 的非常糟糕的建议。实际上,您应该将数据库的使用降至最低以节省负载和内存。这就是为什么我们有 memcached 和 apc 之类的东西。我使用 memcached 进行频繁的读/写,如会话,使用 apc 存储相当恒定的内容,如文章和表单中选择框的选项。然后将数据库用作备用数据库,并在必要时重新初始化 memcache 和 apc...
-
@Jette 请记住,该评论早在 2012 年。是的,memcache 和/或 Redis 是更好的选择。
-
我在 2012 年之前就尝试过,结果是一场灾难。
-
@Jabari,我无法链接到将数据库用作会话处理程序的实现。我们简单地尝试了一下,然后切换到 memcache。数据库上的读/写负载太重了。可能当时使用的数据库服务器容量不够大,但是使用 mysql 作为 session handler 和使用其他东西的区别是如此明显,以至于我再也不会这样做了。