6

我们目前正在使用 NAS 存储 PHP 会话文件,以存储一系列自动缩放负载平衡的应用程序服务器。

我们有兴趣用更强大的解决方案替换它,亚马逊的 DynamoDB 看起来很有趣。我在这里看到一个可能的问题,记录在这里:

http://thwartedefforts.org/2006/11/11/race-conditions-with-ajax-and-php-sessions/

我怀疑 DynamoDB 不支持对象锁定。您能想到的任何解决方法?

如果您对用于 PHP 会话的其他 NoSQL 系统有任何经验,也可以随意加入,因为学习内容可能相似。

提前致谢

4

4 回答 4

9

使用 DynamoDB 的条件写入,您可以实现类似于 PHP 的默认会话处理程序工作方式的悲观锁定方案。

其他人也请求了 DynamoDB 会话处理程序:https ://forums.aws.amazon.com/thread.jspa?messageID=328060 。

更新:适用于 PHP 的 AWS 开发工具包现在包括 DynamoDB 的会话处理程序。请参阅https://github.com/amazonwebservices/aws-sdk-for-php/blob/master/extensions/dynamodbsessionhandler.class.phphttp://docs.amazonwebservices.com/AWSSDKforPHP/latest/#i=DynamoDBSessionHandler

更新: AWS 博客上有一篇关于 DynamoDB 会话处理程序的文章:http: //aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

于 2012-03-15T17:21:17.233 回答
2

有趣的想法 (+1) - 确实是一篇详尽的文章,不过现在只是略过;)

关于 PHP 会话存储的其他 NoSQL 选项,您可能需要查看MongoSession – A PHP MongoDB 会话处理程序,它还引用了带有 Ajax 和 PHP 会话的竞争条件,同时似乎解决了记录在案的问题:

我最近更新了库以支持会话写入和垃圾收集的原子操作,以帮助防止这些竞争条件。

Amazon DynamoDB也应该可以使用类似的方法,方法是适当组合Conditional UpdatesAtomic CountersConsistent Reads,有关这些概念的详细信息,请参阅使用 Amazon DynamoDB中的项目和/或查看以下常见问题解答条目:

于 2012-01-25T11:37:13.863 回答
1

亚马逊刚刚发布了新的 DynamoDB 会话功能:http ://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html

于 2012-05-02T01:58:01.443 回答
1

您的服务器在 AWS 上?为什么不试试 ElastCache 功能?http://aws.amazon.com/en/elasticache/

我使用 CakePHP,witch 支持 DB 和 Memcache 来存储会话。经过一段时间的研究,我选择了 Memcache。实际上,我将 PHP 设置为在 Memcache 上存储会话,并将 CakePHP 设置为使用 php 会话配置。通过这种方式,我可以将我的 memcache 实例分离为会话和缓存。

问候。

于 2012-03-08T17:13:46.810 回答