虽然我有一些想法(IPC,使用mysql堆表,内存缓存)但我的想法似乎都没有“完美”地工作。
我想方法阻止来自同一用户的任何同时访问PHP脚本 访问我脚本的所有用户在每次通话时都会提供一个用户ID,因此我知道在打开它之前是谁敲门 然而,可能会发生用户“垃圾”我的API,我不希望任何人都可以访问该脚本而前一个“api调用”未完成。
我需要具有低系统影响且没有任何竞争条件的东西(即使请求在毫秒或更快的时间内进入也能完美处理)。
我很高兴为您解决类似问题的建议或信息。
平台就是Linux。
更新:
到目前为止,我拒绝使用数据库,因为我担心即使单次影响很小,每秒发送数千次更新或类似查询也会使服务器停止运行。
有时用户工具访问我的API是错误的,只是用大量查询轰炸它,如果通过我的数据库处理它,我希望它会成为性能损失。
答案 0 :(得分:3)
如果我在你的情况下,我可能会从Redis开始。 Redis非常适合表现,而且可能还不错。
特别是,我会查看SETNX命令。我会考虑让密钥在一段时间后过期(因此,如果您的PHP代码死了并且没有删除密钥,那么您的客户不会无限期地被锁定)。
一旦我有这样的工作,并说服自己它会表现得很好,我会按照上面链接的页面上的建议,并查看distributed locks。