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

Перекладено ШІ 1 Laravel News 02 червня, 2026

Чи готові ви дізнатися, як динамічно управляти обмеженнями швидкості у ваших 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` надає можливість програмно скинути обмеження швидкості за умови виконання певних критеріїв, що робить вашу систему обмежень більш динамічною та зручною для користувачів

Популярні

Інше, що варто прочитати

12 Оновлено 02 червня, 2026

Удосконалюйте свої проєкти Laravel за допомогою справжнього штучного інтелекту для кодування з Laravel Boost!

Готові підняти свій робочий процес у Laravel на новий рівень? У цій статті я розгляну Laravel Boost, інноваційний AI-допомічник для програмування, який зробить вашу розробку швидшою та продуктивнішою

18 Оновлено 02 червня, 2026

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

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

11 Оновлено 02 червня, 2026

Управління доступом у Filament за допомогою плагіна Shield

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