我目前正在开发一个在 Amazon EC2 上运行的 Facebook 应用程序。该应用程序正在运行并且大部分开发已完成,但是我们无法让会话持续存在。我们使用 PHP 会话 save_path 技巧尝试了 PHP 默认会话处理、数据库处理和内存缓存处理。我们尝试过使用 auto_start 等 ini 设置,但无济于事。
奇怪的问题是初始会话写入确实写入,但第一次之后的任何后续写入都不会保存。我们可以看到会话 cookie 持续存在,但数据的实际写入总是在第一次写入后失败。这个奇怪的问题适用于我们使用的任何会话处理程序。
我们的 EC2 设置如下:
- 开发:1 个 64 位 linux 服务器,1 个 mongodb 服务器,1 个 elasticache 集群
- 暂存:1 个 64 位 linux 服务器,1 个 mongodb 服务器,1 个 elasticache 集群
- 产品:2 个 64 位 linux 服务器和 1 个负载均衡器,3 个带有副本集的 mongodb 服务器,2 个弹性 ache 集群
会话问题在所有环境中都是可重现的。我已经没有什么想法了,因为我已经尝试了我所知道的一切以及我在谷歌搜索时发现的任何东西。
作为参考,我们使用的是 CakePHP 2.1,但也尝试过 CakePHP 之外的会话。