Bạn cài plugin gửi email nhắc lịch lúc 8 giờ sáng nhưng khách nhận lúc 10 giờ rưỡi. Hoặc plugin backup tự động nhưng thỉnh thoảng không thấy file mới nào. Nguyên nhân nhiều khả năng không phải do plugin hỏng, mà do cách WordPress xử lý tác vụ hẹn giờ. Bài này giải thích cron job là gì và cơ chế thật đằng sau WP-Cron.
Cron job là gì
Cron job là tác vụ được hẹn giờ chạy tự động trên máy chủ (server), không cần ai thủ công bấm nút. Tên “cron” đến từ tiện ích cron trong hệ điều hành Unix và Linux, một dịch vụ nền chạy liên tục và kích hoạt lệnh theo lịch đặt sẵn. Nguồn: WordPress Developer Docs: Plugin Cron.
Bạn có thể hình dung cron job như bộ hẹn giờ trong nhà: đèn tự bật lúc 6 giờ chiều, máy lạnh tự tắt lúc 11 giờ đêm. Chủ nhà không cần bật tắt tay, máy tự làm theo lịch. Cron job trên máy chủ cũng vậy: chạy đúng giờ, không cần ai ngồi chờ.
Các lịch cron thường viết theo cú pháp 5 trường: phút, giờ, ngày trong tháng, tháng, ngày trong tuần. Ví dụ 0 8 * * * nghĩa là “lúc 8 giờ sáng mỗi ngày”.
WordPress dùng cron theo kiểu nào
WordPress không dùng cron thật của máy chủ. Thay vào đó, WordPress có hệ thống của riêng mình gọi là WP-Cron.
WP-Cron hoạt động theo cơ chế khác: mỗi khi có người tải một trang bất kỳ trên website, WordPress kiểm tra danh sách tác vụ đang chờ, rồi chạy những tác vụ đã đến giờ. Không có lượt tải trang thì không có kiểm tra, và tác vụ hẹn giờ không được kích hoạt.
Cơ chế này giúp WordPress hoạt động trên mọi hosting mà không cần quyền truy cập để cấu hình cron thật của máy chủ. Đó là lý do WP-Cron ra đời. WP-Cron xử lý nhiều việc trong nền: xuất bản bài viết đã lên lịch, kiểm tra cập nhật plugin và WordPress core, chạy backup nếu bạn cài plugin backup, dọn dẹp file tạm, và gửi thông báo email.

WP-Cron khác cron thật của máy chủ ở chỗ nào
| Tiêu chí | WP-Cron (cron ảo WordPress) | Cron thật của máy chủ |
|---|---|---|
| Cơ chế kích hoạt | Chạy khi có người tải trang | Chạy theo đồng hồ thật, không phụ thuộc traffic |
| Độ chính xác giờ giấc | Gần đúng giờ nếu có traffic đều | Chạy đúng giờ đặt |
| Phụ thuộc lượng khách | Có, cần có lượt tải trang | Không |
| Quyền truy cập cần | Không cần quyền đặc biệt | Cần quyền cấu hình cron trên server hoặc hosting |
| Phù hợp với | Web nhỏ, traffic đều, tác vụ không nhạy cảm về giờ | Web cần email đúng giờ, backup đúng lịch, tác vụ nặng |
| Rủi ro | Trễ hoặc bỏ task nếu web không có traffic | Ít rủi ro hơn nếu server ổn định |
Sự khác biệt quan trọng nhất: cron thật chạy theo đồng hồ, WP-Cron chạy theo khách vào web.
Vì sao web ít khách thì tác vụ hay chạy trễ
Đây là điểm nhiều chủ web không biết, nên nhầm là plugin hỏng.

Giả sử bạn có web giới thiệu dịch vụ B2B, lượng khách vào không nhiều, thường chỉ rải rác vài chục lượt mỗi ngày. Bạn cài plugin email marketing và hẹn gửi chiến dịch lúc 8 giờ sáng. Nhưng buổi sáng sớm, chưa ai vào web. WP-Cron không có lượt tải trang để kích hoạt, nên tác vụ gửi email nằm chờ. Đến 10 giờ, khách đầu tiên vào web, WP-Cron mới chạy và bắt đầu gửi email.
Đây không phải plugin lỗi. Đây là giới hạn thiết kế của WP-Cron.
Ảnh hưởng thực tế bạn có thể gặp: email nhắc hẹn đến trễ, backup chạy không đúng lịch dự phòng, bài viết đã lên lịch xuất bản trễ vài tiếng, plugin làm sạch file rác chạy không đều. Những chuyện này không nguy hiểm ngay nhưng chồng chất dần sẽ ảnh hưởng đến vận hành và niềm tin của khách.
Khi nào cần cron thật thay vì WP-Cron
Không phải mọi website đều cần cron thật. WP-Cron hoàn toàn ổn với các trang blog, trang giới thiệu công ty, hoặc web có traffic đều và tác vụ không nhạy cảm về thời gian.

Bạn nên chuyển sang cron thật nếu gặp một trong các dấu hiệu sau: email marketing thường xuyên trễ và khách phàn nàn, backup tự động không chạy đúng lịch, website có lượng truy cập không đều hoặc rất ít vào khung giờ cụ thể, hoặc bạn đang chạy tác vụ nặng định kỳ như đồng bộ kho, tính toán báo cáo, tổng hợp dữ liệu.
Cách chuyển thông dụng nhất: tắt WP-Cron đi bằng cách thêm một dòng vào wp-config.php, rồi tạo cron thật trên hosting hoặc VPS để gọi file wp-cron.php theo đúng lịch bạn muốn. Hosting dùng cPanel thường có mục “Cron Jobs” để thiết lập. Với VPS, bạn dùng lệnh crontab trên Linux. Xem thêm VPS là gì và SSH là gì nếu bạn chưa quen với môi trường máy chủ riêng.

Nếu bạn đang kiểm thử thay đổi trên môi trường staging trước khi đưa lên production, lưu ý rằng các tác vụ cron cũng chạy ở đó. Bài staging là gì giải thích chi tiết về môi trường thử nghiệm và những điều cần chú ý khi cron job chạy trên staging.
Nếu bạn đang xem xét nâng cấp hosting để có cron thật và hạ tầng ổn định hơn, xem thêm dịch vụ hosting và máy chủ của Web22.
Cách xem website đang có những lịch hẹn nào
Phần lớn chủ website không biết trang của mình đang chạy bao nhiêu lịch hẹn nền, vì mỗi plugin cài vào thường tự đăng ký thêm vài cái mà không báo. Một website WordPress dùng lâu năm có thể đang giữ hàng chục lịch hẹn, trong đó có những cái thuộc về plugin đã gỡ từ lâu nhưng lịch hẹn vẫn còn nằm lại trong cơ sở dữ liệu và vẫn được gọi mỗi lần có khách ghé.
Muốn nhìn danh sách này, cách nhẹ nhàng nhất là cài một plugin xem lịch hẹn, nó bày ra bảng gồm tên tác vụ, lần chạy kế tiếp và chu kỳ lặp. Người quen dòng lệnh thì dùng WP-CLI với lệnh wp cron event list để xem, và wp cron event run --due-now để chạy ngay những việc đang tới hạn thay vì chờ khách ghé.
Nhìn được danh sách rồi thì việc cần làm cũng rõ. Tác vụ của plugin đã gỡ thì xóa đi cho sạch. Tác vụ đặt chu kỳ mỗi phút trong khi công việc thật chỉ cần chạy mỗi ngày thì giãn ra, vì mỗi lần gọi đều tốn tài nguyên máy chủ. Còn tác vụ quan trọng như gửi thư nhắc đơn hàng hay sao lưu dữ liệu mà thấy lần chạy kế tiếp đã quá hạn từ lâu, đó là dấu hiệu rõ ràng rằng website đang phụ thuộc vào lượt khách để chạy việc nền, và đã tới lúc chuyển sang lịch hẹn thật của máy chủ.
Câu hỏi thường gặp về cron job
WP-Cron có ảnh hưởng đến tốc độ web không?
Có thể. WP-Cron chạy cùng lúc với lượt tải trang, nên nếu có nhiều tác vụ đang chờ thì trang đó sẽ load chậm hơn một chút. Tác động thường nhỏ với web nhỏ nhưng rõ rệt hơn với web có nhiều tác vụ nền hoặc lượng truy cập cao.
Plugin backup tự động có dùng WP-Cron không?
Hầu hết plugin backup như UpdraftPlus và BackWPup đều dùng WP-Cron theo mặc định để lên lịch backup. Một số plugin cho phép bạn chuyển sang dùng cron thật nếu cần độ tin cậy cao hơn.
Có thể xem danh sách WP-Cron đang chạy không?
Có. Plugin WP Crontrol (miễn phí, trên WordPress.org) cho phép xem tất cả tác vụ đang được lên lịch, chỉnh sửa thời gian, hoặc chạy thủ công một tác vụ bất kỳ. Hữu ích khi bạn muốn kiểm tra xem tác vụ có đang hoạt động không.
Cron job có liên quan đến staging không?
Có. Khi kiểm thử trên môi trường staging, các tác vụ cron cũng sẽ chạy ở đó nếu không tắt. Điều này có thể gây ra tình huống không mong muốn, ví dụ staging gửi email thật ra cho khách. Khi dùng staging, nhớ tắt hoặc điều chỉnh cron job liên quan đến email hay dữ liệu thật.
