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,
// ...
]
];
راجع ملف الترخيص للحصول على التفاصيل.