Hướng dẫn cài Xdebug để debug lỗi
Cài đặt Xdebug PHP là bước quan trọng giúp lập trình viên debug lỗi một cách chi tiết và chính xác hơn so với việc dùng dd() hay var_dump().Trong bài...
Xem tiếp...Trong quá trình phát triển ứng dụng web, việc tự động hóa các tác vụ như gửi email hàng tuần, dọn dẹp database, hay backup dữ liệu là cực kỳ quan trọng. Laravel cung cấp một công cụ mạnh mẽ gọi là Task Scheduler. Thay vì phải tạo nhiều dòng Cron job thủ công trên server, bạn chỉ cần quản lý tất cả trong code của mình.
Bài viết có thể bạn quan tâm
Hướng dẫn cài Xdebug để debug lỗi
Trước đây, lập trình viên phải SSH vào server để cấu hình Cron job cho từng tác vụ. Với Laravel Task Scheduler, bạn chỉ cần duy nhất một Cron entry trên server. Mọi lịch trình (scheduling) sẽ được định nghĩa trực tiếp trong file PHP.
Thông thường, chúng ta sẽ viết logic xử lý trong một Artisan Command để dễ quản lý và tái sử dụng.
Chạy lệnh sau để tạo command mới:
php artisan make:command SendWeeklyEmailsSau đó, hãy mở file trong app/Console/Commands/SendWeeklyEmails.php và thêm logic vào hàm handle():
public function handle()
{
// Logic gửi email hoặc xử lý dữ liệu ở đây
$this->info('Emails đã được gửi thành công!');
}Kể từ Laravel 11, bạn có thể định nghĩa schedule trong file routes/console.php. Đối với các phiên bản cũ hơn (Laravel 10 trở xuống), bạn thực hiện trong file app/Console/Kernel.php.
Ví dụ cấu hình trong routes/console.php (Laravel 11):
use Illuminate\Support\Facades\Schedule;
Schedule::command('emails:send-weekly')->weeklyOn(1, '08:00');Các tùy chọn thời gian phổ biến: | Tần suất | Mô tả | | :— | :— | | ->everyMinute(); | Chạy mỗi phút một lần | | ->hourly(); | Chạy mỗi giờ một lần | | ->daily(); | Chạy vào lúc 00:00 mỗi ngày | | ->twiceDaily(1, 13); | Chạy vào lúc 1:00 và 13:00 hàng ngày | | ->weekly(); | Chạy mỗi tuần một lần
Đây là bước quan trọng nhất để hệ thống hoạt động thực tế. Bạn cần thêm một dòng Cron entry duy nhất vào server (thường qua lệnh crontab -e):
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1Lưu ý: Thay
/path-to-your-projectbằng đường dẫn thực tế đến thư mục dự án của bạn.Kiểm tra Schedule khi đang Develop
Nếu bạn đang ở môi trường Local và muốn test xem schedule có chạy đúng không mà không muốn cài đặt Cron job, hãy dùng lệnh:
php artisan schedule:work
Lệnh này sẽ giữ process chạy và thực thi các task ngay khi đến giờ đã định.
Tránh chồng chéo (Prevent Overlapping): Nếu một tác vụ chạy quá lâu, hãy dùng ->withoutOverlapping() để ngăn việc task mới khởi chạy khi task cũ chưa xong.
Log kết quả: Luôn sử dụng ->appendOutputTo($filePath) để ghi lại lịch sử chạy của task, giúp debug dễ dàng hơn.
Maintenance Mode: Sử dụng ->evenInMaintenanceMode() nếu bạn muốn task vẫn chạy ngay cả khi website đang bảo trì.
Để lại suy nghĩ của bạn