Динамічне скидання обмежень швидкості за допомогою методу clear у Laravel

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Чи готові ви дізнатися, як динамічно управляти обмеженнями швидкості у ваших Laravel-додатках? У цій статті ми розглянемо метод clear RateLimiter, який дозволяє ефективно скидувати ліміти в різних сценаріях, зокрема під час завантаження файлів

Метод `clear` класу RateLimiter у Laravel дозволяє динамічно скинути обмеження швидкості, коли виконуються певні умови, що надає гнучкий контроль над поведінкою обмеження в ваших додатках

Скинути обмеження швидкості програмно:

use Illuminate\Support\Facades\RateLimiter;

RateLimiter::clear('api-calls:' . $userId);

Ось практичний приклад для системи завантаження файлів:

class FileUploadController extends Controller
{
    public function upload(Request $request)
    {
        $key = 'file-upload:' . auth()->id();
        $limiter = RateLimiter::attempt(
            $key,
            $perHour = 10,
            function() use ($request) {
                return FileUpload::create([
                    'user_id' => auth()->id(),
                    'filename' => $request->file('document')->store('uploads'),
                    'size' => $request->file('document')->getSize()
                ]);
            }
        );

        if (!$limiter) {
            return response()->json([
                'error' => 'Обмеження на завантаження перевищено. Будь ласка, почекайте.'
            ], 429);
        }

        return response()->json(['status' => 'Файл успішно завантажено']);
    }

    public function approveUpload(FileUpload $upload)
    {
        $this->authorize('approve', $upload);

        $upload->update(['status' => 'approved']);

        RateLimiter::clear('file-upload:' . $upload->user_id);

        return response()->json([
            'status' => 'Завантаження схвалено',
            'quota_reset' => true
        ]);
    }

    public function resetUserQuotas(User $user)
    {
        RateLimiter::clear('file-upload:' . $user->id);
        RateLimiter::clear('bulk-download:' . $user->id);
        RateLimiter::clear('share-link:' . $user->id);

        return back()->with('success', 'Квоти завантаження скинуто');
    }
}

Метод `clear` надає можливість програмно скинути обмеження швидкості за умови виконання певних критеріїв, що робить вашу систему обмежень більш динамічною та зручною для користувачів

Популярні

Logomark Logotype

Оптимізація запитів до бази даних за допомогою скорочених методів Laravel

Laravel пропонує зручні методи для роботи з датами, які значно спрощують запити до бази даних. Досліджуйте, як ці інтуїтивно зрозумілі функції допомагають створювати чіткі та зрозумілі умови для роботи з часовими даними!

Logomark Logotype

4 поширені помилки Vite у Laravel

Використання Vite для створення фронтенд-ресурсів у вашому додатку Laravel може бути захоплюючим, але іноді ви можете стикнутися з певними помилками. У цій статті ми розглянемо чотири поширені помилки, з якими ви можете зіткнутися, а також підкажемо способи їх усунення, щоб ви могли знову зосередитися на розробці вашого додатку

Logomark Logotype

Використання штучного інтелекту для управління перекладами в Laravel

Досліджуйте нові можливості локалізації вашого Laravel-додатку з пакунками, які використовують штучний інтелект, такими як ChatGPT та Claude. Які рішення можуть спростити ваш процес перекладу та зробити його більш точним? Читайте далі, щоб дізнатися більше!