Komponen pengehad arus pembilang tersedia untuk PHP Hyperf (konfigurasi pemasangan)

藏色散人
Lepaskan: 2023-04-10 21:10:02
ke hadapan
5305 orang telah melayarinya

Artikel ini memperkenalkan anda kepada komponen pengehad arus kaunter yang sesuai untuk Hyperf. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

Penjelasan

BETA

Memindahkan pengehad kadar komponen Cache Laravel.

dan PsrSimpleCacheCacheInterface telah ditambah. Kaedah berikut telah ditambah:

  • kenaikan
  • penurunan
  • tambah
  • letak

Pemasangan

composer require wilbur-yu/hyperf-cache-ext
Salin selepas log masuk

Konfigurasi

Ubah suai fail konfigurasi cache:

'default' => [
    'driver' => WilburYu\HyperfCacheExt\Driver\RedisDriver::class,
    'packer' => WilburYu\HyperfCacheExt\Utils\Packer\PhpSerializerPacker::class,
    'prefix' => env('APP_NAME', 'skeleton').':cache:',
],
'limiter' => [
    'max_attempts' => 5,  // 最大允许次数
    'decay_minutes' => 1, // 限流单位时间
    'prefix' => 'counter-rate-limit:', // key 前缀
    'for' => [
        'common' => static function (\Hyperf\HttpServer\Contract\RequestInterface $request) {
            return Limit::perMinute(3);
        },
    ],
    'key' => ThrottleRequest::key(),
],
Salin selepas log masuk
  • for sepadan dengan Laravel Facade RateLimiter::for(callable),

    Apabila perkhidmatan bermula, pendengar akan mengumpul tatasusunan pengehad yang dinamakan untuk digunakan dalam anotasi for parameter rujukan. Apabila aspek anotasi dilaksanakan, permintaan semasa HyperfHttpServerContractRequestInterface akan disuntik ke dalam penutup yang dinamakan

  • key lalai kepada permintaan semasa fullUrl ip. . Menyokong rentetan dan penutupan

2 Tambah:

\WilburYu\HyperfCacheExt\Exception\Handler\CounterRateLimitException::class
Salin selepas log masuk

dalam fail konfigurasi pengecualian, anda juga boleh menangkap pengecualian ini sendiri kaedah getHeaders, nilainya ialah: array('X-RateLimit-Limit', 'X-RateLimit-Remaining', 'Retry-After', 'X-RateLimit-Reset')

Gunakan

untuk menggunakan anotasi had laju kaunter dalam pengawal

#[CounterRateLimitWithRedis(maxAttempts: 5, decayMinutes: 1)]or#[CounterRateLimit(for: "common")]
Salin selepas log masuk

parameter anotasi adalah sama dengan konfigurasi fail, keutamaan Lalai untuk anotasi >Konfigurasi>
Apabila menggunakan for, max_attempts dan decay_minutes tidak mempunyai kesan.

Jika pemacu cache anda bukan redis, anda boleh menggunakan CounterRateLimit anotasi, jika tidak, gunakan CounterRateLimitWithRedis anotasi secara langsung

Apabila menggunakan had laju di tempat lain, anda boleh menggunakan fungsi tambahan counter_limiter(), dan kaedah penggunaannya adalah sama seperti <🎜. > dalam laravel Anda boleh merujuk kepada dokumen pengehad semasa Laravel RateLimiter Facade

$executed = counter_limiter()->attempt(&#39;send-sms:&#39;.$user->id,2,function(){
    // send sms logic
});
if (!$executed) {
    return &#39;Too many messages sent!&#39;;
}
Salin selepas log masuk
Kajian yang disyorkan: "

Tutorial Video PHP"

Atas ialah kandungan terperinci Komponen pengehad arus pembilang tersedia untuk PHP Hyperf (konfigurasi pemasangan). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:learnku.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan