مهدی
3 سال پیش توسط مهدی مطرح شد
5 پاسخ

زمانبندی در لاراول

با سلام.من میخواهم با استفاده از زمان بندی در لاراول یه سری دستورات بصورت روزانه انجام بدم.در زیر کد نوشته شده در فایل App\Console\Kernel رو مشاهده میکنید.

    protected function schedule(Schedule $schedule)
{

    // $schedule->command('inspire')->hourly();

    $schedule->call(function () {

        $field = new Cfield();
        $field = $field->create([
            'title' => 'عنوان',
            'description' => 'توضیحات',
        ]);
        $field->save();
    })->daily();

}

وقتی این کد رو اجرا میکنم ارور No scheduled commands are ready to run رو میده منتها وقتی daily() رو به everyMinute() تغییر میدم اجرا میشه منتها بازهم در صورت دوم اگه 20 بار هم در دقیقه این دستور اجرا کنم اجرا میشه.اگه راه حلی برای این مشکل دارید خوشحال میشم درمیون بذارید


ثبت پرسش جدید
moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
0

سلام
کش سیستم رو پاک کردید و دوباره تست کنید ؟

php artisan cache:clear

هاست شما چی هست ؟ از اجرا شدن cronjob اطمینان دارید ؟
@mahdiam200


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

@mohaligateway با سلام این کار رو پس از خالی کردن کش هم انجام دادم منتها فرقی نکرد.نکته دیگر هم اینکه من اینکار هم در لوکال با دستور

php artisan schedule:run

و هم در هاست اشتراکی انجام دادم و با توجه به اینکه اگه تابع everyMinute() اجرا کنم اجرا میشه پس cron job کارش به درستی انجام میده


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
-1

شما یک بار تمام schdule ها تون رو kill کنید و دوباره run کنید شاید دارن confilict میدن.
@mahdiam200


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

@mohaligateway منظورتون از kill کردن schedule چیه؟


moha li
تخصص : توسعه دهنده لاراول و Vue
@mohaligateway 3 سال پیش مطرح شد
0

وقتی شما یک schdule را اجرا می کنید به صورت پیشفرض بر روی هاست و یا سیستم عامل شما در حال اجرا شدن هست. برای اینکه بتونید اجرا شدن schdule را stop کنید می بایست فرآیند پردازش این پروسه را kill کنید. این اصطلاحی است که در لینوکس استفاده می شود. ابتدا با استفاده از دستور زیر PID اجرا را باید پیدا کنید و سپس آن را kill کنید.

ps -fe | grep artisan

برای kill کردن این لینک را مطالعه کنید.

@mahdiam200


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

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