Lewati ke isi

Website & Domain

Apa Itu wp-cron dan Kenapa Bisa Bikin Hosting Berat?

wp-cron menjalankan tugas terjadwal WordPress saat ada kunjungan. Pahami kenapa ini bisa membebani hosting dan cara memindahkannya ke cron server.

Terbit 5 menit baca

Jawaban singkat

wp-cron adalah penjadwal tugas bawaan WordPress yang dipicu kunjungan, bukan jam server. Di situs ramai atau dengan tugas berat, ia bisa memicu proses tambahan dan memakan CPU. Solusinya, matikan pemicu otomatis dengan DISABLE_WP_CRON lalu jalankan wp-cron.php lewat cron server.

Daftar isi
  1. Cara kerja wp-cron di balik layar
  2. Kenapa wp-cron bisa membebani hosting?
  3. Tanda wp-cron sedang bermasalah
  4. Pilihan pemicu dan dampaknya
  5. Memindahkan wp-cron ke cron server
  6. Kapan wp-cron bawaan masih boleh dipakai

Bayangkan kamu membuka laporan Resource Usage di cPanel dan melihat CPU akun sering mentok, padahal pengunjung tidak sedang ramai. Setelah ditelusuri, log akses dipenuhi permintaan ke satu file: wp-cron.php. Ini cerita yang cukup umum di hosting WordPress, dan penyebabnya ada pada cara WordPress menjalankan tugas terjadwal.

wp-cron adalah sistem penjadwal bawaan WordPress. Ia mengurus tugas seperti menerbitkan tulisan terjadwal, memeriksa pembaruan plugin, menghapus data sementara, sampai menjalankan backup dan sinkronisasi dari plugin. Bedanya dengan cron di server Linux, wp-cron tidak berjalan berdasarkan jam. Ia hanya bangun saat ada orang (atau bot) membuka situs.

Cara kerja wp-cron di balik layar

Setiap kali halaman dimuat, WordPress memeriksa apakah ada tugas yang sudah jatuh tempo. Kalau ada, WordPress mengirim permintaan latar ke wp-cron.php di situsnya sendiri, lalu file itu menjalankan tugas-tugas yang tertunda. Ada kunci sederhana agar pemicu tidak terjadi terus-menerus, dengan jeda bawaan sekitar 60 detik.

Desain ini masuk akal untuk hosting murah zaman dulu yang tidak menyediakan akses cron. WordPress tetap bisa menjalankan jadwal di mana pun ia dipasang. Dokumentasi resmi WordPress sendiri menyebut konsekuensinya: tugas yang dijadwalkan pukul 14.00 tidak akan berjalan sampai ada kunjungan setelah jam itu.

Kenapa wp-cron bisa membebani hosting?

Masalah muncul dari dua arah yang berlawanan.

Di situs yang ramai, pemeriksaan jadwal terjadi di setiap kunjungan, dan permintaan latar ke wp-cron.php dipicu berulang kali sepanjang hari. Setiap pemicu adalah proses PHP tambahan yang ikut antre dengan pengunjung sungguhan. Di shared hosting dengan batas jumlah proses, ini bisa membuat pengunjung kebagian halaman lambat atau error 508.

Di situs yang sepi, tugas menumpuk karena tidak ada kunjungan yang memicunya. Begitu ada satu pengunjung, semua tugas yang tertunda dijalankan sekaligus. Kalau di antaranya ada backup atau sinkronisasi stok, pengunjung itu yang menanggung lambatnya.

Selain itu, kualitas tugasnya sendiri berpengaruh. Plugin yang menjadwalkan tugas berat terlalu sering, misalnya memeriksa ribuan produk setiap menit, akan membebani server apa pun pemicunya. Bot yang memanggil wp-cron.php langsung juga menambah beban tanpa memberi manfaat.

Tanda wp-cron sedang bermasalah

Beberapa gejala bisa kamu periksa tanpa alat khusus:

  • Site Health memberi peringatan jadwal. Menu Tools > Site Health punya pemeriksaan untuk tugas terjadwal yang terlambat atau gagal. Peringatan ini sering muncul di situs sepi, atau saat permintaan latar ke situs sendiri diblokir firewall.
  • Tulisan berstatus "Missed schedule". Artikel yang dijadwalkan tidak terbit pada waktunya karena tidak ada pemicu tepat waktu.
  • Log akses dipenuhi wp-cron.php. Di cPanel, unduh log dari menu Raw Access lalu hitung berapa kali file itu dipanggil per jam. Jumlah yang sangat besar, apalagi dari alamat IP luar, menandakan pemicu berlebihan atau bot.
  • Grafik CPU berpola gigi gergaji, naik tajam di jam tertentu tanpa lonjakan pengunjung. Polanya sering cocok dengan jadwal backup atau sinkronisasi dari plugin.

Pilihan pemicu dan dampaknya

PemicuKapan tugas berjalanBeban ke serverCocok untuk
wp-cron bawaanSaat ada kunjunganIkut naik bersama trafikSitus kecil yang jarang punya tugas berat
Cron server memanggil wp-cron.phpSesuai jadwal tetap, misalnya tiap 5 atau 15 menitTerkendali dan terprediksiHampir semua situs bisnis
Cron server dengan WP-CLISesuai jadwal tetap, tanpa lewat web serverPaling hemat, tidak memakai proses webVPS atau hosting dengan akses SSH dan WP-CLI

Memindahkan wp-cron ke cron server

Langkah pertama adalah mematikan pemicu otomatis. Tambahkan baris ini di wp-config.php, di atas komentar "That's all, stop editing!":

define( 'DISABLE_WP_CRON', true );

Baris ini tidak mematikan tugas terjadwal. Ia hanya menghentikan WordPress memicu wp-cron.php saat ada kunjungan. Karena itu, langkah kedua wajib: jadwalkan pemanggilan dari server.

Di cPanel, buka menu Cron Jobs, pilih interval (setiap 5 atau 15 menit sudah cukup untuk kebanyakan situs), lalu isi perintah:

wget -q -O /dev/null "https://contoh.com/wp-cron.php?doing_wp_cron" >/dev/null 2>&1

Kalau hosting atau VPS menyediakan WP-CLI, perintah berikut menjalankan tugas yang jatuh tempo langsung dari baris perintah tanpa lewat web server:

cd /home/user/public_html && wp cron event run --due-now >/dev/null 2>&1

Format jadwal cron dan cara mengujinya dibahas lengkap di cara membuat cron job di Linux. Setelah dipasang, tunggu satu interval lalu pastikan tulisan terjadwal atau email dari plugin tetap terkirim. Plugin pengelola cron seperti WP Crontrol membantu melihat daftar tugas, jadwalnya, dan plugin pemiliknya, termasuk tugas yang jadwalnya terlambat.

Jangan lupa satu hal: setelah DISABLE_WP_CRON aktif, tanpa cron server tidak ada tugas yang berjalan. Tulisan terjadwal akan berstatus "Missed schedule" dan pembaruan keamanan otomatis ikut berhenti.

Soal interval, lebih sering tidak selalu lebih baik. Setiap lima menit sudah terasa tepat waktu untuk toko online yang mengirim email pesanan atau menyinkronkan stok. Untuk company profile yang hanya menerbitkan artikel sesekali, setiap 15 atau 30 menit sudah memadai dan lebih hemat sumber daya. Hindari interval setiap menit di shared hosting, karena sebagian penyedia membatasi frekuensi cron job dan jadwal serapat itu jarang dibutuhkan.

Kapan wp-cron bawaan masih boleh dipakai

Untuk blog pribadi atau company profile dengan sedikit plugin, wp-cron bawaan jarang menimbulkan masalah dan tidak perlu diutak-atik. Pindahkan ke cron server bila kamu melihat salah satu tanda ini: Resource Usage sering menyentuh batas, log akses penuh permintaan wp-cron.php, tulisan terjadwal sering terlewat, atau situs memakai plugin yang menjalankan backup, impor, dan sinkronisasi rutin.

Kalau setelah dipindahkan situs masih terasa berat, wp-cron mungkin bukan satu-satunya penyebab. Langkah diagnosis yang lebih luas ada di cara menemukan penyebab WordPress lambat, dan cara membaca angka batas hosting ada di arti CPU, EP, dan IO di hosting.

Singkatnya, wp-cron adalah penjadwal praktis yang menumpang pada kunjungan. Untuk situs bisnis yang serius, mematikan pemicu otomatisnya dan menyerahkan jadwal ke cron server membuat beban lebih terkendali dan tugas berjalan tepat waktu.

Sumber & referensi

Baca juga