在PHP AWS中管理会话

时间:2014-02-13 16:10:22

标签: php mysql session amazon-web-services amazon-dynamodb

我有一个托管在AWS上的网站,我无法信任此会话数组$_SESSION[],因为有时候select * from table_name where id=$_SESSION[id]无法按预期工作。 我正在寻找一些会话管理技巧,没关系如果我使用Database或Dyanmo DB。 如果有一个可扩展的应用程序,其上有很多用户。这样做的首选方式是什么?

1 个答案:

答案 0 :(得分:0)

在php中存储会话有3个基本选项:基于文件,memcached和数据库支持。

如果您使用基于文件的会话,则需要使用粘性会话,以便来自同一用户的后续请求被路由回同一实例。如果您使用自动缩放,这可能不起作用 - 如果实例已停止,则该用户将丢失其会话。

您可以使用memcached,其中有一个存储会话的memcached实例。这可能是最简单的选择。实例上没有保存状态,您不需要使用粘性会话。只要你没有超过memcached的可用内存,你应该没问题。

第三种选择是使用数据库支持的会话。这应该与使用memcached会话具有相同的效果,但允许更复杂的行为 - 例如,您可以跨数据中心复制数据库,理论上可以让您拥有可跨多个区域扩展的应用程序。