Rumah >pembangunan bahagian belakang >tutorial php >Menguruskan had kadar API di Laravel melalui pendakian pekerjaan

Menguruskan had kadar API di Laravel melalui pendakian pekerjaan

James Robert Taylor
James Robert Taylorasal
2025-03-06 01:44:08330semak imbas

Managing API Rate Limits in Laravel Through Job Throttling

dengan cekap menguruskan had kadar API adalah penting apabila mengintegrasikan dengan perkhidmatan luaran seperti AWS SES untuk penghantaran e -mel. Laravel menawarkan penyelesaian yang diselaraskan menggunakan

untuk mengawal aliran pekerjaan beratur, menghalang banjir API dan gangguan perkhidmatan yang berpotensi. Mari kita meneroka pelaksanaan praktikal. Redis::throttle

memanfaatkan Redis::throttle

Laravel's

menyediakan mekanisme yang mantap untuk mengawal pelaksanaan pekerjaan beratur. Ini memastikan pematuhan kepada had kadar API, mengelakkan blok perkhidmatan sementara atau kekal. Struktur asas adalah seperti berikut: Redis::throttle

Contoh Praktikal: Penghantaran E -mel AWS SES
Redis::throttle('key-name')
    ->allow(10) // Allow 10 requests
    ->every(5) // Within a 5-second window
    ->then(function () {
        // Your job logic here
    });

mari kita buat sistem middleware untuk menguruskan kadar penghantaran e -mel dengan AWS SES:

middleware ini akan digunakan untuk sistem pemberitahuan e -mel kami:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Redis;

class EmailRateLimit
{
    public function handle($job, Closure $next)
    {
        Redis::throttle('email-throttle')
            ->allow(10)
            ->every(2)
            ->block(2) // Wait 2 seconds if throttled
            ->then(function () use ($job, $next) {
                $next($job);
            }, function () use ($job) {
                $job->release(30); // Release after 30 seconds
            });
    }
}

Akhirnya, mengintegrasikannya ke dalam pengawal:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;
use Illuminate\Notifications\Messages\MailMessage;
use App\Http\Middleware\EmailRateLimit;

class EmailDispatch extends Notification implements ShouldQueue
{
    use Queueable;

    public $content;

    public function __construct($content)
    {
        $this->content = $content;
    }

    // ... (rest of the Notification class remains the same) ...

    public function middleware(): array
    {
        return [new EmailRateLimit];
    }
}

Pendekatan komprehensif ini memastikan aplikasi anda menghormati had kadar API sambil mengekalkan penghantaran e -mel yang cekap melalui AWS SES atau mana -mana pembekal perkhidmatan e -mel yang serasi. Penggunaan middleware dengan bersih memisahkan logik pengurangan kadar dari kod aplikasi teras anda.

Atas ialah kandungan terperinci Menguruskan had kadar API di Laravel melalui pendakian pekerjaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn