嘟嘟社区

php大佬进!如何限制php每秒只执行一次?


本帖最后由 wfc 于 2022-7-16 07:53 编辑

a.php实际上每秒有10个ip同时访问,如何实现每秒只执行一个ip的请求,同一秒剩余9个的请求实际上代码是不执行的?
想了半天找不到解题思路

大佬果然厉害,感谢各位

说得太复杂,,,,

做一个文件锁就行了

touch(‘abc.lock’)

如果存在这个abc.lock 就不执行了

事情做完了,把abc.lock删掉

本帖最后由 司马南 于 2022-7-16 07:16 编辑

等待一秒后执行下一次?

sleep

以我半杯水的水平只能想到用mysql来限制

司马南 发表于 2022-7-16 07:14
等待一秒后执行下一次?

sleep不行的,其他ip请求会执行

需要额外的存储来限制,例如redis

wfc 发表于 2022-7-16 07:16
sleep不行的,其他ip请求会执行

包起来啊加个判断,

gzlock 发表于 2022-7-16 07:17
需要额外的存储来限制,例如redis

redis也只能限制每个ip在n秒的请求数吧?

司马南 发表于 2022-7-16 07:19
包起来啊加个判断,

其他ip的同一秒请求在a.php会认为是一个新的请求

本帖最后由 snoywing 于 2022-7-16 07:25 编辑

队列,请求都插队列里,如果当前请求在队列是当前秒数第一则处理,队列数据存活周期两秒。
另外利用悲观锁应该也能实现

snoywing 发表于 2022-7-16 07:23
队列,请求都插队列里,如果当前请求在队列是当前秒数第一则处理,队列数据存活周期两秒。
另外利用悲观锁 …

大佬这个好像有用,我找找代码试试