Get in touch
or send us a question?
CONTACT

Cron job in laravel

Bước 1: Install Laravel

Trong bước này, nếu bạn nào chưa tải source laravel về, thì bạn dùng lệnh dưới đây để download

composer create-project --prefer-dist laravel/laravel laravelCronjob "6.*"

Bạn có thể lên trang chủ để xem tại đây

Bước 2: Create Command

Ở bước này, bạn chạy lệnh dưới để tạo file

php artisan make:command DemoCron --command=demo:cron

Khi bạn chạy xong, bạn vào thư mục app/Console/Commands thì sẽ có file DemoCron.php

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class DemoCron extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'demo:cron';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        \Log::info("Cron is working fine!");

        $this->info('Demo:Cron Cummand Run successfully!');
    }
}

Bước 3: Register on Task Scheduler

Trong bước này, chúng ta cần đăng ký trong file Kernel.php Bạn mở file Kernel.php trong file app/Console

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;

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

    /**
     * Define the application's command schedule.
     *
     * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
     * @return void
     */
    protected function schedule(Schedule $schedule)
    {
        $schedule->command('demo:cron')
                 ->everyMinute();
    }

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

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

Dưới đây là các lịch trình mà bạn có thể dùng, bạn có thể tham khảo trên trang chủ tại đây

Bước 4: Run Scheduler Command For Test

Trước khi chạy, bạn nên kiểm tra lại xem, cron job đã tồn tại chưa, bạn chạy lệnh này để kiểm tra

php artisan list

Nó sẽ hiện ra tất cả các command mà bạn đã đăng ký.

Và bây giờ thì bạn có thể chạy cron job của mình, bằng lệnh dưới đây

php artisan demo:cron

Trên đây là các bước để tạo và chạy cron job và đây là cách chạy thủ công dưới local

Khi bạn có một trang web và muốn chạy cron job tự động trên server thì bạn truy cập vào server của mình dùng sh truy cập vào máy chủ của mình và dùng lệnh này để kiểm tra

crontab -e

Lệnh này sẽ mở cron job trên máy chủ và bạn dán lệnh này vào sau đó lưu và thoát

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

Và bạn đừng quên thay thế đường dẫn đầy đủ của bạn vào.