Laravel Api同时收到两个请求

时间:2017-06-19 20:30:54

标签: php api laravel-5

我在laravel 5.4中有一个api,它被android应用程序占用,问题是我遇到了竞争问题,因为很多时候应用程序同时发送2次相同的请求,在基础。如何在Laravel应用程序级别避免这种情况?我无法调整应用程序,因为它是由另一家公司完成的。

作为一种解决方法,我在函数之前放置1-15s的随机睡眠,以试图阻止两个请求同时执行。

谢谢!

1 个答案:

答案 0 :(得分:0)

如评论中所述,唯一密钥和数据库事务是防止数据重复的最佳选择。该文档有一些很好的例子说明从哪里开始。

https://laravel.com/docs/5.4/database#database-transactions

您是否遇到任何记录锁定问题?您可以通过将第二个参数传递给DB::transaction()方法来指定尝试事务的次数。

您还可以控制手动提交和回滚事务。这与定义唯一索引一起应该可以防止重复发生。

最后,您可以通过中间件对api收到的请求进行速率限制,例如:['prefix' => 'api', 'middleware' => 'throttle:5,10']

希望这一切都有帮助。