3

在我们的服务器上启用 APC 时,PHP 会话出现问题。

该应用程序在没有 APC 的情况下运行良好。然而,由于我们启用了 APC,当服务器负载过重时会话似乎变得混乱,即用户随机登录为另一个。一旦我们禁用 APC,一切都会恢复正常。我们似乎找不到任何有同样问题的人,除了这些人的相关问题(set-cookie 被缓存在 MS ASP 中):http: //msdn.microsoft.com/en-us/magazine/cc163577。 aspx#S2

其他人有类似的经历吗?你能推荐一些建议吗?

PS:我们所有的会话都由 php.ini 中的文件处理。我们也在运行 apache2。

4

4 回答 4

2

我们在这里遇到了类似的问题。APC 在这一点上只是一个主要嫌疑人,因为它很难复制。

我们使用带会话管理的 Zend 框架,理论上 Zend 的代码缓存在 APC 中,当系统处于严重负载下时,代码使用以前缓存的 SID 而不是当前的 SID。

我们的保障措施是将会话 ID 保存在会话数据中,并在检索会话时比较这些值。如果 ID 不同,我们将销毁会话并退出。

于 2011-02-01T18:15:37.380 回答
0

好吧,请验证 apc 是否真的混淆了数据……我能想到的唯一可能发生的情况是当它变满并执行 stackoverflow 时。请检查使用情况并可能增加缓存大小。

于 2010-08-23T18:01:46.617 回答
0

APC 出现了一个问题,其中自定义会话处理对象在保存会话数据之前被破坏。它可能与您的问题无关,但session_write_close在常规 PHP 关闭修复该问题之前显式调用。

你的问题听起来有点不同,但我可以确认问题确实存在。

于 2010-08-23T18:11:25.567 回答
0

为了完成这篇文章,我们通过三件事成功地减少了这个问题:

1) 我们进行了额外检查以确保 IP 与会话 ID 匹配,否则请注销用户。然后我们可以使用它来跟踪问题发生的频率。

2) 我们切换到 XCache 并立即看到更少的混淆会话 ID。然而,在非常重的负载下,问题再次出现。

3)然后我们将 php 配置中的 Xcache 内存加倍(xcache.size 和 xcache.var_size),现在问题就解决了。

所以我们怀疑 APC 或 Xcache 内存不足是问题所在。我们仍在等待,看看这是否是一个永久的解决方案。

于 2010-09-17T14:08:06.553 回答