Trong các ứng dụng lớn, bạn cần lên lịch định kì cho các công việc bằng Cron jobs. Tại số một số thời điểm, việc quản lý các cron jobs trở nên cồng kềnh và khó khăn hơn. Laravel Scheduler là một công cụ hỗ trợ bạn dễ dàng quản lý và lên lịch cho các công việc bằng cron jobs. Có nhiều trương hợp khác nhau mà bạn cần lên lịch để thực hiện như sao lưu dữ liệu, email quảng cáo, v.v.

Để thiết lập Laravel Scheduler, bạn chỉ cần thiết lập một cron jobs trong máy chủ của bạn. Sử dụng điều đó, Laravel scheduler sẽ quản lý tất cả công việc mà bạn đã lên lịch.

Đầu tiên, chúng ta hãy tìm hiểu về Cron job.

Cron Job là gì?

Cron jobs là một lệnh Linux được sử dụng để lập lịch cho các công việc sẽ được thực thi tại một thời điểm nào đó trong tương lai, điều này thường được sử dụng cho một công việc được thực hiện theo chu kỳ.

Cấu trúc của cron jobs như sau:

*    *    *   *    *  Command_to_execute
|    |    |    |   |       
|    |    |    |    Day of the Week ( 0 - 6 ) ( Sunday = 0 )
|    |    |    |
|    |    |    Month ( 1 - 12 )
|    |    |
|    |    Day of Month ( 1 - 31 )
|    |
|    Hour ( 0 - 23 )
|
Min ( 0 - 59 )

Ví dụ:

Để chạy sample.sh hàng ngày lúc 9 giờ tối (21:00)

0 21 * * * sample.sh 1>/dev/null 2>&1

Cài đặt Laravel Scheduler

Được rồi, bây giờ từ những điều cơ bản về cron jobs, bạn hãy cài đặt Laravel Scheduler trong cron jobs nào.

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

Cron trên sẽ thực hiện lệnh "php artisan schedule:run" mỗi phút trong hệ thống và từ đó, Laravel Scheduler sẽ thực hiện được điều kì diệu của nó.

Ngoài ra, bạn có thể chạy Laravel Scheduler ở Local bằng lệnh command sau:

php artisan schedule:work

Cách thêm công việc vào Laravel Scheduler

Bây giờ, chúng ta sẽ tìm hiểu cách thêm công việc vào Laravel Scheduler và thực hiện chúng trong một thời gian nhất định.

Bạn có thể xác định công việc của mình trong hàm schedule của App\Console\Kernel, bạn có thể thêm công việc theo nhiều cách khác nhau:

+ Sử dụng artisan command (Link hướng dẫn)

+ Sử dụng Queued Jobs (Link hướng dẫn)

+ v.v

Schedule Artisan Command

<?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 = [
        //
    ];

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

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

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

Schedule Queued Jobs

<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use App\Jobs\CreateUserJob ;

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->job(new CreateUserJob )->everyFiveMinutes();
    }

    /**
     * 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à danh sách các tùy chọn, cho phép bạn thực hiện các công việc với tần số khác nhau:

Method Description
->cron(‘* * * * *’); Run the task on a custom Cron schedule
->everyMinute(); Run the task every minute
->everyTwoMinutes(); Run the task every two minutes
->everyThreeMinutes(); Run the task every three minutes
->everyFourMinutes(); Run the task every four minutes
->everyFiveMinutes(); Run the task every five minutes
->everyTenMinutes(); Run the task every ten minutes
->everyFifteenMinutes(); Run the task every fifteen minutes
->everyThirtyMinutes(); Run the task every thirty minutes
->hourly(); Run the task every hour
->hourlyAt(17); Run the task every hour at 17 minutes past the hour
->everyTwoHours(); Run the task every two hours
->everyThreeHours(); Run the task every three hours
->everyFourHours(); Run the task every four hours
->everySixHours(); Run the task every six hours
->daily(); Run the task every day at midnight
->dailyAt(’13:00′); Run the task every day at 13:00
->twiceDaily(1, 13); Run the task daily at 1:00 & 13:00
->weekly(); Run the task every sunday at 00:00
->weeklyOn(1, ‘8:00’); Run the task every week on Monday at 8:00
->monthly(); Run the task on the first day of every month at 00:00
->monthlyOn(4, ’15:00′); Run the task every month on the 4th at 15:00
->monthlyOnLastDay(’15:00′); Run the task on the last day of the month at 15:00
->quarterly(); Run the task on the first day of every quarter at 00:00
->yearly(); Run the task on the first day of every year at 00:00
->timezone(‘America/New_York’); Set the timezone

Đây chỉ là những điều cơ bản về quản lý công việc định kỳ bằng Laravel Scheduler. Laravel Scheduler là một công cụ rất tiên tiến, do đó bạn có thể sử dụng nó cho các hoạt động phức tạp hơn.

Tôi hy vọng bài viết này đã giúp bạn hiểu hơn cách quản lý công việc định kỳ bằng Laravel Scheduler. Hãy cho tôi biết bạn đang sử dụng Laravel Scheduler trong ứng dụng của mình như thế nào!

Tạm biệt!

CÓ THỂ BẠN QUAN TÂM

Laravel Model

Laravel Model

Model là gì? Trong mô hình MVC, chữ “M” viết tắt là Model, Model dùng để xử lý logic nghiệp vụ trong bất kì ứng dụng dựa trên mô hình MVC. Trong Laravel, Model là lớp đại diện cho cấu trúc logic và...

Laravel UI Custom Email Verification Template

Laravel UI Custom Email Verification Template

Nếu bạn đang dùng thư viện laravel/ui để làm các chức năng liên quan đến authentication, và trong dự án của bạn, bạn cần thay đổi template email verification thay vì sử dụng template email verificatio...

Implementing Private User Folders with CKFinder in Laravel

Implementing Private User Folders with CKFinder in Laravel

CKFinder 3 CKFinder 3 là trình quản lý tập tin được tích hợp với CKEditor 4 và CKEditor 5. Nó giúp bạn dễ dàng đưa các tập tin và hình ảnh vào nội dung của Editor một cách an toàn. Đây là một tín...

Generate PDF with Header and Footer on every page in Laravel

Generate PDF with Header and Footer on every page in Laravel

Hôm nay, trong bài viết này mình sẽ chia sẻ với các bạn cách dompdf mà header và footer sẽ được hiển thị ở tất cả các trang. Đây cũng là một vấn đề khá phổ biến, khi chúng ta phát triển các tính năng...

Laravel  Scout Full Text Search with Algolia

Laravel Scout Full Text Search with Algolia

Laravel Scout cung cấp một giải pháp đơn giản, dựa trên trình điều khiển để thêm tìm kiếm Full Text vào các mô hình Eloquent của bạn. Khi sử dụng Eloquent, Scout sẽ tự động giữ chỉ mục tìm kiếm của bạ...

Laravel Controllers

Laravel Controllers

Trong mô hình MVC, chữ "C" là từ viết tắt của Controller và nó đóng vai trò rất quan trọng để phân tích các logic business. Khi người dùng truy cập vào trình duyệt, nó sẽ đi đến route đầu tiên, sau đó...

Simplify Your Laravel Workflow with Laravel Pint

Simplify Your Laravel Workflow with Laravel Pint

Laravel Pint là gì? Laravel Pint là một công cụ sửa đổi mã nguồn của bạn để mã nguồn của bạn tuân thủ theo các tiêu chuẩn. Nói một cách khác, Laravel Pint sẽ quét toàn bộ mã nguồn của bạn, phát...

Defer in Laravel: Push Tasks to the Background

Defer in Laravel: Push Tasks to the Background

Deferred Functions trong Laravel Các phiên bản Laravel trước version 11, chúng ta thường sử dụng Queued Jobs cho phép thực hiện sắp xếp các tác vụ xử lý background . Nhưng đôi khi có những tác v...

Integrating Google Gemini AI in Laravel

Integrating Google Gemini AI in Laravel

Google Gemini Gemini là một mô hình trí tuệ nhân tạo mới mạnh mẽ từ Google không chỉ có khả năng hiểu văn bản mà còn có thể hiểu cả hình ảnh, video và âm thanh. Gemini là một mô hình đa phương ti...

ManhDanBlogs