Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

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 ở cường độ rất cao (tối đa 2s 1 lần) mà không phải dùng qua Systemd Timer, cài đặt đơn giản và rất hiệu quả, làm 1 lần rồi có thể quên luôn cũng được

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

  • 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

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

  • Workers & Pages -> Create Wordker

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

  • Đặt 1 tên tùy ý, sau đó ấn vào Deploy

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

  • Ấ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

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

Quay lại phần Setting, sẽ thấy Trigger Events

  • Ấn vào Add, chọn Cron Triggers

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

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

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

Kiểm tra sơ bộ cron chạy 2s 1 lần chính xác

Thiết lập gọi WP-Cron bằng Cloudflare Workers – Đề xuất khuyên dùng từ 2025

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 luô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, lại 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 này, lại hoàn toàn miễn phí

Tổng thể không có bất cứ phàn nàn gì về hình thức này 😀


Related Posts

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ị!