Thiết lập gọi Cron bằng Cloudflare Workers
Do Cloudflare Workers giới hạn subrequests 50/request ở tài khoản miễn phí, gọi WP-Cron 1 giây 1 lần sẽ bị thiếu đi 10 lần, dùng thực tế mình thấy ~5s gọi 1 lần WP-Cron đã đủ hiệu quả rồi, 1s chạy 1 lần WP-Cron đôi khi server load không kịp luôn ấy
- Workers & Pages -> Create Wordker
- Đặt 1 tên tùy ý, sau đó ấn vào Deploy
- Ấn tiếp vào Edit code
Xóa hết code cũ đang có, thay bằng đoạn code bên dưới, chỉnh sửa lại cho phù hợp với nhu cầu
addEventListener("scheduled", (event) => {
event.waitUntil(handleScheduled(event));
});
async function handleScheduled(event) {
const duration = 60000; // 1 phút
const interval = 2000; // 2 giây
const startTime = performance.now();
while (performance.now() - startTime < duration) {
const taskStartTime = performance.now();
await fetch("https://bibica.net/wp-cron.php?doing_wp_cron");
const elapsedTime = performance.now() - taskStartTime;
const delay = interval - elapsedTime;
if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay));
}
}
- Ở dòng 7, muốn bao nhiêu giây gọi cron 1 lần thì sửa lại, mặc định là 2s
Trong trường hợp bạn muốn 5 giây gửi 1 lần thì sửa lại - Sửa dòng 12 bằng domain của bạn
- Xong xuôi thì ấn vào Deploy
Quay lại phần Setting, sẽ thấy Trigger Events
- Ấn vào Add, chọn Cron Triggers
Cron expression sửa lại thành */1 * * * *, sau đó ấn Save lại
Tổng thể các bước: 1 phút gọi workers 1 lần, workers trong 1 phút sẽ chạy 30 lần, mỗi lần cách nhau 2 giây tới WP-Cron
Ban đầu mình tưởng 2s gọi 1 lần, nó sẽ tính là 1 request, nhưng theo cách tính toán, quản lý của Cloudflare, mỗi lần gọi Cron Triggers nó mới tính là 1 request, dùng cả ngày chỉ ~ 1.500 request, trong khi Cloudflare cho tới 100.000 request mỗi ngày, theo cách tinh toán này, thậm chí có thể tạo cron cho 50 trang web trên cùng 1 tài khoản mà vẫn thừa request miễn phí
Thấy hiệu quả quá nên mình bỏ luôn các dịch vụ gọi cron miễn phí (cron-job.org), dùng hoàn toàn từ Cloudflare Worker cho khỏe
Kết luận
Gọi WP-Cron bằng Cloudflare Workers rất nhẹ, nhanh, độ chính xác và ổn định rất cao, không phải cấu hình gì từ phía server, sau này cài lại VPS không lo quên hay sót phần cron, lại hoàn toàn miễn phí




