Mohamad
Mohamad
خواندن ۱ دقیقه·۳ سال پیش

جلوگیری از مموری لیک در لاراول در زمان اجرای صف ها

Laravel Queues
Laravel Queues

زمانی که در هاست های اشتراکی اپلیکیشن لاراولی‌تون رو اجرا میکنید و همچنان قصد دارید از صف ها استفاده کنید بهتره به این نکات توجه کنید.

1. اگر از سوپروایزر استفاده نمیکنید و قصد دارید صف هارو با کران جاب مدیریت کنید.

فقط یکبار کران جاب ست کنید و اون هم به زمانبندی کرنل لاراول باشه.

php artisan schedule:run

و در کرنل لاراول دستور اجرای صف هارو ایجاد کنید.

$schedule->command('queue:work')->everyMinute();

اما این پایان کار نیست و در ادامه وقتی پردازش های سرور زیاد بشه با توجه به منابع محدودی که در هاست اشتراکی موجود هست خیلی راحت به memory lick میخورید.

برای حل این مشکل ما راه حل های مختلفی داریم که توصیه میکنم این مقاله خوب رو مطالعه کنید.

اما اگر بخوام بطور خلاصه بهتون بگم کافیه از آپشن های

--rest
--sleep
$schedule->command('queue:work', [
'--rest' => 0.5,
'--sleep' => 5,
])->everyMinute();

استفاده بشه، با استفاده از این آپشن ها بین جاب هایی که قرار هست ارا بشه نیم ثانیه تاخیر میذاریم و همچنین در صورت خالی بودن صف ها ۵ ثانیه به سرور استراحت میدیم تا به بررسی پردازش های دیگه بپردازه.

دقت کنید که راه حل های مختلفی هست و ممکنه این راه حل در کوتاه مدت بهتون کمک کننه و طبیعتا زمانی که مقیاس محصولتون بزرگتر میشه نیاز به بهبود این راه حل ها دارید.

موفق باشید.

phplaravelqueueslinuxcronjobs
Software Engineer | Blogger | Tech Enthusiast
شاید از این پست‌ها خوشتان بیاید