一次性代码的原子/安全服务

时间:2013-07-17 23:31:49

标签: php python mysql amazon-web-services sequence

我有一个与我合作的电子商务网站的一次性折扣代码列表。我需要在我的网站上设置一个页面,我的用户可以在其中填写表单,然后将获得其中一个代码。代码是预先确定的,并已在文本文件中发送给我;我不能只是动态生成它们。我需要弄清楚从列表中获取未使用的代码的最佳方法,然后将其从列表中删除(或更新标记以将其标记为已使用),以避免任何可能给两个人相同的码。换句话说,类似于队列的东西,我可以原子地从队列中删除一个项目。

这个webapp将在AWS上运行,当前的代码是Python(尽管我可能会在必要时使用其他东西; PHP会很简单)。理想情况下,我会使用其中一个AWS服务或mysql来执行此操作,但如果他们不是一个集成的王室痛苦,我会对其他解决方案持开放态度。由于我认为“队列”,SQS突然出现在我的脑海中,但这显然不是它的目的(例如队列中剩余的消息的14天限制对我来说肯定不起作用)。虽然我期待非常适度的流量(这意味着即使真正的hacky解决方案也可能有效),但我宁愿了解即使在规模上这样做的正确方法。

2 个答案:

答案 0 :(得分:0)

我无法提供实际的代码示例,但最简单的方法之一就是文件中的增量计数器,所以类似

0
code1
code2
code3
etc

每次使用代码时都会跳过那么多行。

您也可以在数据库中轻松完成此操作

答案 1 :(得分:0)

Amazon DynamoDB是来自AWS的快速NoSQL数据库,它可能非常适合此用例。设置数据库表很简单,您可以将代码加载到那里。 DynamoDB有一个DeleteItem operation,它还允许您在相同的原子操作中检索数据(通过将ReturnValues参数设置为ALL_OLD)。这将允许您一次性获取和删除代码,因此没有其他请求/进程可以获得相同的代码。 AWS发布官方SDK以帮助您连接和使用其服务,包括Python和PHP SDK(请参阅http://aws.amazon.com/tools/)。