عمو پدی
7 سال پیش توسط عمو پدی مطرح شد
3 پاسخ

استفاده صحیح از task scheduling

دوستان مثلا من یک schedule تعریف میکنم به این صورت:

$schedule->call(function () {
            DB::table('recent_users')->delete();
        })->everyMinute();

خب حالا نکته اول اینه که تا من دستور

php artisan schedule:run

رو اجرا نکنم این هم اجرا نمیشه. تازه با اجرا کردنش هم فقط یه بار اجرا میشه. ینی یک دقیقه بعد، دوباره بصورت خودبخود اجرا نمیشه. حالا برای حل این مشکل، میشه از cron توی لینوکس و task scheduler داخل ویندوز استفاده کرد. من اومدم داخل ویندوزم یه فایل bat ایجاد کردم و اینو توش نوشتم:

cd path\to\project
php artisan schedule:run >> /dev/null 2>&1

و یه task جدید ایجاد کردم که هر دقیقه بره این فایلو بخونه تا دستور اجرا بشه.
حالا سوالم اینجاست که: با این روش، دیگه اون تابع زمانی (everyMinute) که توی لاراول میذاریم هیچ فایده ای نداره و همه چی وابسته میشه به اون زمانی که دستی توی task scheduler ویندوز تنظیم کردیم!
مثلا من میام اون تابع رو میذارم همون everyMinute. اما توی ویندوز تنظیم میکنم که اون فایل bat هر 5 دقیقه اجرا بشه! اینجوری خاصیت اون تابعه اونجا الکیه!
این قضیه واقعا درسته؟
اگه درست باشه، یه مشکل پیش میاد:
من اگه چندتا schedule مختلف داشته باشم و بخوام هر کدوم از اینارو با زمان های جدا اجرا کنم (مئلا هرروز، هر 5 دقیقه، هرهفته و...) مجبورم برای هر کدومشون یه task جدا داخل ویندوزم درست کنم! این خیلی اذیت میکنه.
ممنون میشم دوستان راهنمایی کنن


ثبت پرسش جدید
سجاد
تخصص : برنامه نویس
@sajaddp 7 سال پیش مطرح شد
0

سلام

شما در مسیر app\Console یک فایل دارید به اسم kernel کافی هست اونجا در تابع schedule کرون های خودتون رو اضافه کنید و بعد یک task بگذارید که هر دقیقه این فایل رو اجرا کنه.


امیرحسین زارعیان
تخصص : مدیر عامل ،برنامه نویس ،استرات...
@amirzareian 3 سال پیش مطرح شد
0

سلام وقتتون بخیر میشه لطفا کامل تر توضیح بدین ممنون


میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
0

سلام خسته نباشید
ببین با این کامند باید کار شما اوکی باشه اگه نیست مشکل از شماست

php artisan schedule:work

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام