public function checkRateLimit()
{
$current = time();
// 获得限制配置 $limit 限制次数,$window秒数。
// 比如每300s调用1000次
// $window=300 $limit=1000
list ($limit, $window) = getRateLimit();
// 获得限制数据 $allowance 可用调用次数,$timestamp上次调用时间。
list ($allowance, $timestamp) = loadAllowance();
// 计算这次可调用次数,即$allowance再加上两次间隔调用时间*调用速率
$allowance += (int) (($current - $timestamp) * $limit / $window);
if ($allowance > $limit) {
$allowance = $limit;
}
if ($allowance < 1) {
//每次调用可调用为0
saveAllowance(0, $current);
return false;
} else {
//每次调用可调用次数减1
saveAllowance($allowance - 1, $current);
return true;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。