DynamoDB for PHP sessions


DynamoDB for PHP sessions

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

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

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

我怀疑DynamoDB不支持对象锁定。你能想出什么变通办法吗?

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

提前感谢

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

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

更新:AWS SDK for PHP现在包括DynamoDB的会话处理程序。看见https://github.com/amazonwebservices/aws-sdk-for-php/blob/master/extensions/dynamodbsessionhandler.class.php和http://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

有趣的想法(+1)-实际上是一篇精心设计的文章,不过现在只是略读一下;)

关于PHP会话存储的其他NoSQL选项,你可能想看看MongoSession——一个PHP MongoDB会话处理程序,它也引用了Ajax和PHP会话的竞争条件,同时似乎解决了记录在案的问题:

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

类似的方法也可以通过条件更新原子计数器一致读取的适当组合用于Amazon DynamoDB,有关这些概念的详细信息,请参阅在Amazon DynamoDB中使用项目和/或查看以下常见问题条目:

  • Amazon DynamoDB支持条件操作吗?-是的,您可以指定一个必须满足的条件,才能完成对项的PUT、更新或删除操作。[…]条件操作允许用户在DynamoDB上实现乐观并发控制系统
  • Amazon DynamoDB支持递增或递减操作吗?-是的,AmazonDynamoDB允许对标量值进行原子递增和递减操作

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

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

谨致问候。

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