Sử dụng cron job trong laravel 5.4

Đăng bởi Biên Nguyễn
Thứ Bảy,
{ date_from_database($post->created_at, 'M/d/ Y') }}

Hướng dẫn các bạn Sử dụng cron job trong laravel 5.4 để lập lịch để làm một điều gì đó.Chẳng hạn như lập lịch post bài, lập lịch lấy bài viết, lập lịch tạo báo cáo ...

Một bài toán là chúng ta muốn lấy bài viết từ một website nào đó theo quy tắc cứ 7h sáng hằng ngày lại tìm kiếm bài mới lấy về website chúng ta 1 lần.Thì việc cứ 7h chúng ta copy bằng tay hoặc nhấn nút trên website để copy tự động thôi cũng đã rất mất thời gian rồi.Chính vì vậy chúng ta cần cron job để giúp chúng ta thực hiện việc này.

Để bắt đầu với cron job trong laravel 5 thì chúng ta tìm đến file app/Console/Kernel.php đây là file mà chugns ta sẽ định nghĩa các cron job tại đây.

Chúng ta bắt đầu với 1 ví dụ đơn giản là xóa tất cả các user đã đăng ký trong ngày:

call(function () {
            DB::table('recent_users')->delete();
        })->daily();
    }
}

Một số phương thức ràng buộc về ngày tháng:

Phương thức Giới thiệu
->weekdays(); Tất cả các ngày trong tuần ngoại trừ chủ nhật
->sundays(); Chủ nhật
->mondays(); Thứ 2
->tuesdays(); Thứ 3
->wednesdays(); Thứ 4
->thursdays(); Thứ 5
->fridays(); Thứ 6
->saturdays(); Thứ 7

 

Không cho thực thi chồng chéo:

$schedule->command('emails:send')->withoutOverlapping();

Task Output

In kết quả hiển thị ra file:

$schedule->command('emails:send')
         ->daily()
         ->sendOutputTo($filePath);

In kết quả hiển thị vào cuối file:

$schedule->command('emails:send')
         ->daily()
         ->appendOutputTo($filePath);

Hoặc email kết quả hiển thị

$schedule->command('foo')
         ->daily()
         ->sendOutputTo($filePath)
         ->emailOutputTo('foo@example.com');

 

Task Hook:

Thực hiện gửi email sau function hoặc trước function nào đó:

$schedule->command('emails:send')
         ->daily()
         ->before(function () {
             // Task is about to start...
         })
         ->after(function () {
             // Task is complete...
         });