<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Cache;
use App\Libs\Xres;
class ThrottleRequests {
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$unique = $request->getClientIp() . $request->getRequestUri();
if (Cache::has('ip_list')) {
$ip_list = Cache::get('ip_list');
} else {
$ip_list = array();
}
$index = array_search($unique, array_column($ip_list, 'ip'));
if (false === $index) {
array_push($ip_list, ['ip' => $unique, 'time' => $this->time()]);
Cache::put('ip_list', $ip_list, 1440);
} else {
$gap = $this->time() - $ip_list[$index]['time'];
$ip_list[$index]['time'] = $this->time();
Cache::put('ip_list', $ip_list, 1440);
if ($gap < 1000) {
return Xres::error("請求頻率過快", 200);
}
}
return $next($request);
}
private function time(){
return (int)(microtime(true)*1000);
}
}
Laravel5.0 限制請求頻率中介軟體
相關文章
- Laravel最佳實踐 -- API請求頻率限制(Throttle中介軟體)LaravelAPI
- Django 中介軟體實現使用者認證與IP頻率限制Django
- 使用中介軟體記錄Laravel慢請求Laravel
- jwt-auth中介軟體失效,請求幫助JWT
- ASP.NET Core - 請求管道與中介軟體ASP.NET
- 詳解nginx的請求限制(連線限制和請求限制)Nginx
- 使用django 中介軟體在所有請求前執行功能Django
- 使用 Guzzle 中介軟體進行優雅的請求重試
- ASP.NET Core中介軟體計算Http請求時間ASP.NETHTTP
- 閃現, 請求擴充套件, 藍圖, 中介軟體(瞭解)套件
- 中介軟體:還在使用trim過濾請求引數嗎?
- laravel如何利用中介軟體優雅的記錄請求日誌Laravel
- Django CBV裝飾器 中介軟體 auth模組 CSRF跨站請求Django
- ASP.NET Core如何知道一個請求執行了哪些中介軟體?ASP.NET
- nginx根據token做頻率限制Nginx
- Laravel 佇列執行頻率限制Laravel佇列
- Kubernetes資源請求與限制
- java請求頻次控制Java
- Lumen 使用 throttle 限制介面訪問頻率
- DRF之許可權和頻率限制
- 純程式碼分享個人Monolog API Log,記錄請求&響應中介軟體MonoAPI
- Redis中介軟體與Web中介軟體RedisWeb
- 在Linux中用軟體降低CPU的頻率Linux
- 第 14 篇:限制介面的訪問頻率
- 中介軟體之訊息中介軟體-pulsar
- 跟我一起學.NetCore之中介軟體(Middleware)簡介和解析請求管道構建NetCore
- laravel 簡單限制搜尋引擎爬蟲頻率Laravel爬蟲
- Django元件---Django請求生命週期和中介軟體Django元件
- CORS跨域限制以及預請求驗證CORS跨域
- nginx如何限制併發連線請求數?Nginx
- 對請求來源進行白名單限制
- cpu頻率調節軟體:Turbo Boost Switcher Pro for macMac
- Laravel 實現使用中介軟體記錄所有請求資訊以及日誌純 JSON 格式儲存LaravelJSON
- django中介軟體中判斷前端是不是ajax請求,從而判斷是否有許可權Django前端
- redux中介軟體Redux
- Laravel 中介軟體Laravel
- 中介軟體(middleware)
- Django——中介軟體Django