<?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
- redis限制請求頻率及資源隔離Redis
- Django 中介軟體實現使用者認證與IP頻率限制Django
- 使用中介軟體記錄Laravel慢請求Laravel
- jwt-auth中介軟體失效,請求幫助JWT
- ASP.NET Core - 請求管道與中介軟體ASP.NET
- 使用django 中介軟體在所有請求前執行功能Django
- .net core 一個避免跨站請求的中介軟體
- 詳解nginx的請求限制(連線限制和請求限制)Nginx
- 使用 Guzzle 中介軟體進行優雅的請求重試
- ASP.NET Core中介軟體計算Http請求時間ASP.NETHTTP
- 閃現, 請求擴充套件, 藍圖, 中介軟體(瞭解)套件
- 中介軟體:還在使用trim過濾請求引數嗎?
- Django CBV裝飾器 中介軟體 auth模組 CSRF跨站請求Django
- laravel如何利用中介軟體優雅的記錄請求日誌Laravel
- ASP.NET Core如何知道一個請求執行了哪些中介軟體?ASP.NET
- Laravel 佇列執行頻率限制Laravel佇列
- nginx根據token做頻率限制Nginx
- Lumen 使用 throttle 限制介面訪問頻率
- 純程式碼分享個人Monolog API Log,記錄請求&響應中介軟體MonoAPI
- 第 14 篇:限制介面的訪問頻率
- 在Linux中用軟體降低CPU的頻率Linux
- 提高提交版本控制軟體頻率的好處
- 中介軟體之訊息中介軟體-pulsar
- 請問怎麼限制軟體的使用期限?
- laravel 簡單限制搜尋引擎爬蟲頻率Laravel爬蟲
- cpu頻率調節軟體:Turbo Boost Switcher Pro for macMac
- Kubernetes資源請求與限制
- Django元件---Django請求生命週期和中介軟體Django元件
- 清華尹成帶你實戰GO案例(48)Go 請求處理頻率控制Go
- Apiware:一個輕鬆將net/http及fasthttp請求引數繫結到結構體的中介軟體APIHTTPAST結構體
- xp下軟體限制策略限制軟體以及破解方法
- ThinkPHP 中介軟體PHP
- redux中介軟體Redux
- golang 中介軟體Golang
- 中介軟體整理
- django中介軟體Django
- Laravel 中介軟體Laravel