راکت

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

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 بار هم در دقیقه این دستور اجرا کنم اجرا میشه.اگه راه حلی برای این مشکل دارید خوشحال میشم درمیون بذارید

مهدی
مهدی
@mahdiam200
ثبت پرسش جدید

پاسخ‌ها

5
moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

php artisan cache:clear

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

مهدی
مهدی
@mahdiam200

تخصص: برنامه نویس

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

php artisan schedule:run

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

شاید پاسخ شما همین‌جا باشد

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

مهدی
مهدی
@mahdiam200

تخصص: برنامه نویس

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

moha li
moha li
@mohaligateway

تخصص: توسعه دهنده لاراول و Vue

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

ps -fe | grep artisan

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

@mahdiam200

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

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