- Published on
Laravel Short Schedule
Artisan Command တွေကို စက္ကန့်တိုင်း run မယ်။
အရင်ကတော့ command တွေကို စက္ကန့်တိုင်း run ချင်ရင် infinite loop တစ်ခုပတ်ပြီး sleep(1) ဆိုပြီး ရေးချင်တာရေးပါတယ်။ (လိုက်မလုပ်ပါနဲ့ :3)
အခုတော့ laravel-short-schedule ကိုသုံးပြီး နည်းစနစ် မှန်မှန် လုပ်လို့ရပါပြီ။
အရင်ဆုံး package ကို install လုပ်ပါမယ်။
composer require spatie/laravel-short-scheduleပြီးရင် app\Console\Kernel.php မှာ shortSchedule ဆိုတဲ့ function တစ်ခုလုပ်ပြီး ကိုယ် run ချင်တဲ့ command ထည့်ပါမယ်။
protected function shortSchedule(\Spatie\ShortSchedule\ShortSchedule $shortSchedule)
{
$shortSchedule->command('inspire')->everySecond();
}နောက်ဆုံး
php artisan short-schedule:runလို့ run လိုက်ရင် shortSchedule function ထဲက command တွေကို သတ်မှတ်ထားတဲ့ အချိန်အလိုက် run နေမှာပါ။
အခုနမူနာအရဆို inspire ဆိုတဲ့ command ကို တစ်စက္ကန့်တိုင်း run နေမှာပါ။
5 စက္ကန့်တိုင်း run ချင်ရင်
$shortSchedule->command('inspire')->everySeconds(5);Overlap မဖြစ်အောင် run ချင်ရင်
$shortSchedule->command('inspire')->withoutOverlapping()->everySecond();သတ်မှတ်ထားတဲ့ အချိန်အတွင်း run ချင်ရင်
$shortSchedule->command('inspire')->between('09:00', '17:00')->everySecond();တခြား option တွေလည်းရှိပါသေးတယ်။ ဒီမှာ ကြည့်လို့ရပါတယ်။
Production မှာဆိုရင်
php artisan short-schedule:runကို supervisor သုံးပြီး background process အနေနဲ့ run ဖို့လိုပါတယ်။ ဒါဆို ရပါပြီ။
ဆက်လက်ပြီး နောက်ကွယ်ကနေ ဘယ်လို အလုပ်လုပ်သွားတယ်ဆိုတာ ကျွန်တော်သိလောက် share ချင်ပါတယ်။
(နောက်ကွယ်က လုပ်တာတွေ မသိလည်းဘာမှ မဖြစ်ပါဘူး အလုပ်ဖြစ်ရင် အဆင်ပြေပါတယ်။ သိတော့ ကိုယ်အရေးတဲ့ code အပေါ်ကို ပိုပြီး confident ရှိတာပေါ့ 😁)
နောက်ကွယ်ကနေ အမြဲ run နေဖို့ အတွက်ကို React PHP ရဲ့ EventLoop ကို သုံးထားတာပါ။
ဒီ video မှာ Event Loop ဘယ်လို အလုပ်လုပ်တယ် ဆိုတာ ရှင်းပြထားပါတယ်။
Ref : https://freek.dev/1743-how-to-schedule-commands-to-run-every-few-seconds-in-a-laravel-app
