decayMinutes
- đó là thời gian trong giới hạn của bạn sẽ được tính. Giới hạn về mặt kỹ thuật là giá trị với TTL (Thời gian hoạt động) $decayMinutes * 60
giây trong bộ nhớ cache tăng lên trên mỗi lần truy cập. Khi TTL tự động vượt quá giá trị sẽ bị hủy trong bộ nhớ cache và số lần truy cập mới sẽ bắt đầu.
Nhìn vào RateLimit::hit() mã. Nó khá rõ ràng:
/**
* Increment the counter for a given key for a given decay time.
*
* @param string $key
* @param float|int $decayMinutes
* @return int
*/
public function hit($key, $decayMinutes = 1)
{
$this->cache->add(
$key.':timer', $this->availableAt($decayMinutes * 60), $decayMinutes
);
$added = $this->cache->add($key, 0, $decayMinutes);
$hits = (int) $this->cache->increment($key);
if (! $added && $hits == 1) {
$this->cache->put($key, 1, $decayMinutes);
}
return $hits;
}
Nếu bạn muốn giới hạn một số hoạt động 10 lượt truy cập mỗi 5 phút, hơn decayMinutes
phải 5.
Nguồn
2017-10-15 03:27:40
Từ khi đọc mã nguồn, đây là sự hiểu biết của tôi quá. – fubar
Đây là câu trả lời sai. 'decayMinutes' (trong Laravel 5.5) không phải là một khối thời gian. –
Tôi đoán thời gian chặn đăng nhập là một ví dụ và nó hoạt động chủ yếu theo cùng một cách để điều chỉnh. Chỉ cần thay thế 'nỗ lực đăng nhập' bằng 'url duy nhất được yêu cầu'. Nếu bạn không thực hiện bất kỳ trang hoặc api yêu cầu cho $ decayMinutes phút sau đó bộ đếm ga reset. –