Bài viết này hướng dẫn bạn tạo lịch cron job trên hosting để tự động chạy các tác vụ như gửi báo cáo, đồng bộ dữ liệu hoặc dọn tệp tạm. Bạn cũng sẽ biết cách kiểm tra lịch chạy và xử lý một số lỗi thường gặp.
1. Chuẩn bị thông tin tác vụ
Trước khi tạo cron job, hãy xác định chương trình cần chạy, tần suất thực hiện và đường dẫn đến tệp. Với website PHP, tác vụ thường là một tệp PHP chạy bằng PHP CLI. Bạn cần biết đường dẫn đầy đủ đến tệp, ví dụ đường dẫn trong thư mục website.
Nếu chưa rõ đường dẫn thư mục, hãy kiểm tra trong File Manager hoặc thông tin tài khoản hosting. Đường dẫn ví dụ bên dưới chỉ để minh họa; hãy thay tên tài khoản, thư mục và tệp bằng thông tin thực tế. Nếu hosting có nhiều phiên bản PHP, hãy kiểm tra phiên bản phù hợp với website và đường dẫn PHP CLI được nhà cung cấp hỗ trợ.
2. Mở mục Cron Jobs trên hosting
Đăng nhập vào bảng điều khiển hosting, tìm mục Cron Jobs hoặc Tác vụ định kỳ. Nếu không thấy mục này, hãy kiểm tra tài liệu của bảng điều khiển hoặc gửi yêu cầu hỗ trợ để xác nhận gói hosting có cho phép tạo cron job hay không.
Trong giao diện tạo lịch, bạn thường có thể chọn thời gian chạy từ các danh sách có sẵn hoặc nhập năm trường lịch theo thứ tự: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Dấu sao (*) có nghĩa là mọi giá trị trong trường đó.
Ví dụ, lịch dưới đây chạy vào phút thứ 0 của mỗi giờ:
0 * * * *
Lịch sau chạy mỗi ngày lúc 02:30:
30 2 * * *
Hãy chọn tần suất phù hợp với tác vụ, tránh đặt lịch chạy quá dày nếu chương trình cần nhiều tài nguyên hoặc thời gian xử lý dài.
3. Nhập lệnh chạy
Với tệp PHP, lệnh thường có dạng gọi PHP CLI kèm đường dẫn đầy đủ đến tệp. Ví dụ:
/usr/bin/php /home/ten_tai_khoan/public_html/cron.php
Hãy thay /usr/bin/php bằng đường dẫn PHP CLI phù hợp trên hosting nếu cần. Bạn có thể kiểm tra thông tin trong bảng điều khiển hoặc hỏi bộ phận hỗ trợ. Không nên mặc định rằng đường dẫn ví dụ này đúng với mọi máy chủ.
Để lưu thông báo chạy vào tệp nhật ký, có thể dùng lệnh:
/usr/bin/php /home/ten_tai_khoan/public_html/cron.php >> /home/ten_tai_khoan/cron.log 2>&1