راکت
حل شده

task schedulingدر لاراول

4 پاسخ

سلام و درود دوستان وقتتون بخیر
من در کرنل یک schedule تعریف کردم که مثلا در یک جدول هر دقیقه یک مقداری را وارد کند . خب کد کرنل رو به صورت زیر تغییر دادم .

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Illuminate\Support\Facades\DB;

class Kernel extends ConsoleKernel
{
    /**
     * The Artisan commands provided by your application.
     *
     * @var array
     */
    protected $commands = [
        //
    ];

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
        $schedule->call(function () {
                DB::table('pagesanalytics')->insert([
                    'test1'=>'test1',
                ]);
            })->everyMinute();
    }

    /**
     * Register the commands for the application.
     *
     * @return void
     */
    protected function commands()
    {
        $this->load(__DIR__.'/Commands');

        require base_path('routes/console.php');
    }
}

حالا مشکل من اینه که خود به خود هر دقیقه اجرا نمیشه و من باید حتما دستور php artisan schedule:run رو اجرا کنم . بعد از اجرای دستور یک بار توی دیتابیس یک ریکورد ثبت میشه اما دقیقه بعد اجرا نمیشه .
خب با خودم فکر کردم که از cron لینوکس استفاده کنم که مثلا هر دقیقه دستور run رو اجرا کنه اما مشکل اینجاس که اگر اسکجول های دیگه مثلا هر ۵ دقیقه هم داشته باشم همگی هر یک دقیقه اجرا میشن .

و به طور کل واقعا این قضیه schedule من رو گیج کرده . اگر یک توضیح کامل بدین واقعا ممنونتون میشم .
اطلاعات کلی :
هاست وبسایت هاست اشتراکی هستش cpanel
و لوکال هم سیستم عاملم linux ubuntu هستش
برای هر دو اگر گام به گام توضیح بدین ممنونتون میشم . و اگر در آموزش های آقای موسوی هم جلسه ای هست که این مطلبو گفته باشن هم آدرسشو بگذارین بعد از توضیح دادن ممنونتون میشم .

ثبت پرسش جدید

پاسخ‌ها

4
محمد رضا
محمد رضا
@salar.mohammad2013

تخصص: Full Stack Developer

بهترین پاسخ

سلام
توی لوکال که باید schedule:work بزنی تا اجرا بشه کامل هر بار
برای سرور شما وقتی میگی هر دقیقه اجرا بشه اون schedule ک ساعتی باشه یا روزانه باشه فقط چک میشه توسط برنامت ک ایا نیاز به اجراش هست یا ن و تداخلی براش پیش نمیاد
عملا شما فقط میگی هر دقیقه چک کن کاری هست انجام بدی یا ن
حالا اگر ساعتیه داستان دیگ خودت میتونی cron رو هم روزانه ساعتی پنج دقیقه ای کنی که همخونی داشته باشه با schedule

امیرحسین زارعیان
امیرحسین زارعیان
@amirzareian

تخصص: مدیر عامل ،برنامه نویس ،استراتژیست

دوستان کسی هست که بتونه کمک کنه ؟

سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

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

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

امیرحسین زارعیان
امیرحسین زارعیان
@amirzareian

تخصص: مدیر عامل ،برنامه نویس ،استراتژیست

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

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

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