Về cơ bản nó không khác bài viết cũ từ 2018 là mấy, viết lại thành 1 bài mới, vì cách này có thể gọi cron tới wp-cron.php
theo cường độ rất cao (tối đa 2s 1 lần) mà không phải dùng qua Systemd Timer, đơn giản và hiệu quả, làm 1 lần rồi có thể quên
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 2s-5s gọi 1 lần WP-Cron đã rất hiệu quả rồi, 1s chạy 1 lần WP-Cron đôi khi server load không kịp luôn ấy
- Tạo 1 tài khoản Cloudflare mới, có 100,000 request miễn phí, đỡ tốn request ở tài khoản chính
- 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)); } }
- Thay dòng 12 bằng domain của bạn
- Ở 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 thành
const interval = 5000; // 5 giây
- 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
Kiểm tra sơ bộ cron chạy 2s 1 lần chính xác
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, số lượng request dùng rất ít, chỉ ~ 1.500 request mỗi ngày, 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 cùng lúc mà vẫn thừa request
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 luôn từ Cloudflare Worker cho khỏe
Kết luận
Gọi WP-Cron bằng Cloudflare Workers hiệu quả, miễn phí, độ chính xác và ổn định rất cao, lại không phải cấu hình gì từ phía server, làm xong 1 lần rồi thôi, đỡ phải nhớ nhiều
Tổng thể không có bất cứ phàn nàn gì về hình thức này 😀
Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.
• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.
• ✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!