การ laravel queue rate limit อย่างง่าย
3.* เวอร์ชันเข้ากันได้กับ Laravel 7+ เท่านั้น
$ composer require mxl/laravel-queue-rate-limit
สำหรับ Laravel 6 ให้ใช้เวอร์ชัน 2.*:
$ composer require mxl/laravel-queue-rate-limit " ^2.0 "
สำหรับ Laravel 5 ให้ใช้เวอร์ชัน 1.*:
$ composer require mxl/laravel-queue-rate-limit " ^1.0 "
Laravel 5.5+ จะใช้คุณสมบัติการค้นหาอัตโนมัติเพื่อเพิ่ม MichaelLedinLaravelQueueRateLimitQueueServiceProvider::class
ให้กับผู้ให้บริการ
แพ็คเกจนี้เข้ากันไม่ได้กับ Laravel เวอร์ชันเก่า
เพิ่มขีดจำกัดอัตราใน config/queue.php
:
' rateLimits ' => [
' mail ' => [ // queue name
' allows ' => 1 , // 1 job
' every ' => 5 // per 5 seconds
]
]
ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้การเชื่อมต่อ sync
เมื่อจัดคิวงาน ดูคุณสมบัติ default
ใน config/queue.php
เรียกใช้ผู้ปฏิบัติงานคิว:
$ php artisan queue:work --queue default,mail
จากนั้นผลักดันงานหลายงานให้เป็น default
และคิว mail
:
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' mail ' );
Mail:: queue (..., ' default ' );
Mail:: queue (..., ' default ' );
คุณจะเห็นว่าเฉพาะงานคิว mail
เท่านั้นที่จะถูกจำกัดอัตรา ในขณะที่งานคิว default
จะทำงานตามปกติ
ขยาย QueueServiceProvider
:
<?php
namespace App Providers ;
class QueueServiceProvider extends MichaelLedin LaravelQueueRateLimit QueueServiceProvider
{
protected function registerLogger ()
{
$ this -> app -> singleton ( ' queue.logger ' , function () {
return null ;
});
}
}
เพิ่มลงในอาร์เรย์ providers
ใน config/app.php
:
<?php
return [
// ...
' providers ' => [
// Laravel Framework Service Providers
// ...
// Application Service Providers
// ...
App Providers QueueServiceProvider::class,
// ...
]
];
ดูไฟล์ใบอนุญาตสำหรับรายละเอียด