frankerzeng / easy_ratelimiter
基于内存的访问频率限制
v1.0
2019-07-02 01:48 UTC
Requires
- php: >=5.5.0
Requires (Dev)
- phpunit/phpunit: ^5
This package is not auto-updated.
Last update: 2025-07-09 07:14:36 UTC
README
基于内存的访问频率限制
作者在项目中用到的地方是登录注册风控,限制登录请求的次数,如10分钟内只能重试5次、短信验证码1分钟内最多发一次,24小时内最多发5次等
Setup/Installation
You can include this library by running:
composer require frankerzeng/easy_ratelimiter
Example
// 验证10秒内1次访问 $validate = (new Ratelimiter(['type' => "17665544332", 'times' => 1, 'time' => 10]))->check(); var_dump($validate);// bool(true) $validate = (new Ratelimiter(['type' => "17665544332", 'times' => 1, 'time' => 10]))->check(); var_dump($validate);// bool(false)
Debug
进入服务器控制共享内存
ipcs -m 查看本机共享内存的状态和统计
ipcrm -m shmid 清除共享内存中的数据。
Notice
-
需要开启shmop拓展
在Dockerfile中加入RUN docker-php-ext-install shmop
-
并发高的情况需要考虑原子性
TODO
由于共享内存的写操作不是原子性的,在并发大的情况下应该增加并发控制,保证原子性