php 限制使用者介面請求頻率
阿新 • • 發佈:2019-01-23
有時候我們需要限制一個API訪問的頻率,例如單使用者一分鐘之內只能訪問多少次。
類似於這樣的需求很容易用Redis來實現。
<?php
$redis = new Predis\Client(array(
'scheme' => 'tcp',
'host' => '127.0.0.1',
'port' => '6379'
));
$redis->auth('123456');
//這個key記錄該使用者1的訪問次數
$key = 'user:1:api_count';
//限制次數為10
$limit = 10;
$check = $redis->exists($key);
if($check){
$redis->incr($key); //鍵值遞增
$count = $redis->get($key);
if($count > 10){
exit('your have too many request');
}
}else{
$redis->incr($key);
//限制時間為60秒
$redis->expire($key,60);
}
$count = $redis->get($key);
echo 'You have '.$count.' request';