Cara Kerja WordPress Cron

Diterbitkan: 2021-12-03

Pernahkah Anda bertanya-tanya apa itu WP-Cron? Jika demikian, maka ini adalah artikel yang sempurna bagi Anda untuk mempelajari semua yang perlu Anda ketahui tentang tugas terjadwal WordPress.

Cron (Command Run On) adalah utilitas yang dimulai pada sistem UNIX, dan kemudian berkembang pada distribusi LINUX yang diusulkan sebagai penjadwal pekerjaan berbasis waktu.

Pekerjaan cron adalah tugas yang dilakukan berulang-ulang atau sebagai tugas satu kali. Selama bertahun-tahun sebagian besar telah digunakan sebagai alat administrasi sistem untuk menjalankan tugas secara otomatis.

WordPress Cron

Saat menjalankan situs WordPress, beberapa tugas dilakukan di latar belakang yang perlu dijalankan secara berkala, seperti memeriksa pembaruan tema dan plugin, posting terjadwal, transien yang akan dihapus, dan banyak lagi. Tugas terjadwal berbasis waktu ini ditangani oleh WP-Cron.

Dalam instalasi WordPress Anda, file yang terkait dengan pekerjaan cron adalah wp-cron.php , yang terletak di folder root instalasi Anda.

File wp-cron.php berisi kode untuk tugas otomatis yang terkait dengan pembaruan dan posting.

Bagaimana itu bekerja

WP-Cron memeriksa daftar tugas pada setiap pemuatan halaman dan menjalankannya sesuai dengan itu.

Jika saat halaman dimuat, tugas jatuh tempo, itu ditambahkan dalam antrian. Dengan cara itu WordPress memastikan bahwa bahkan acara yang jatuh tempo akan diaktifkan dan tidak dilewati dan pada akhirnya semua tugas akan dieksekusi pada pemuatan halaman itu.

Wajar jika ini tampak tidak rasional bagi Anda, tetapi pikirkan alternatifnya. Dalam lingkungan hosting bersama, seperti mayoritas, Anda harus memiliki akses ke perintah server untuk mengontrol tugas-tugas ini sesuai keinginan Anda, tetapi bukankah itu berisiko bagi server?

Jadi, pertimbangkan apa yang dilakukan WordPress sebagai solusi dalam situasi ini. Namun, ini memiliki beberapa kelemahan yang akan kita periksa sebentar lagi.

Plugin WP-Crontrol

Cara yang bagus dan mudah untuk melihat daftar pekerjaan cron di situs WordPress Anda, adalah dengan menginstal plugin WP-Crontrol.

Setelah mengaktifkannya, Anda dapat melihat halaman admin plugin di bawah item menu Tools->Cron Events. Dalam instalasi Vanilla Anda akan melihat sesuatu seperti ini:

Jika Anda mengarahkan mouse ke setiap baris, Anda akan melihat bahwa ada tindakan yang disediakan bagi Anda untuk mengedit atau menjalankan acara apa pun.

Di layar edit acara wp_update_themes misalnya, Anda dapat mengubah pengaturannya

Di bawah item menu Pengaturan -> Jadwal Cron, Anda dapat melihat jadwal default dan jika Anda mau, tambahkan jadwal Anda sendiri dan beri nama untuk dilihat dalam daftar.

Cara Membuat Pekerjaan Cron

Untuk menambahkan tugas cron secara manual, yang harus Anda lakukan adalah mengedit file functions.php tema. Untuk mendemonstrasikan contoh sederhana, buka dengan editor favorit Anda dan tambahkan potongan kode berikut:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); }

Di mana 'my_cronjob' adalah nama hook Anda dan 'my_cronjob_function' adalah nama fungsi Anda yang hanya akan mengirim email ke alamat yang Anda tentukan dengan mengganti EMAIL_ADDRESS dengan yang diinginkan.

Selanjutnya, kita perlu menjadwalkan hook ini untuk dieksekusi pada waktu yang kita inginkan.

Cara Menjalankan Pekerjaan Sekali

Untuk melakukan tindakan sebagai pekerjaan WP-Cron satu kali, kita harus menggunakan fungsi bawaan WordPress wp_schedule_single_event() yang dirancang untuk memicu hook pada waktu tertentu. Strukturnya seperti ini:

wp_schedule_single_event( $timestamp, $hook, $args, $wp_error )

Di mana $timestamp adalah stempel waktu Unix untuk kapan menjalankan acara berikutnya dan $hook adalah kait tindakan untuk dieksekusi saat acara dijalankan.

Kedua parameter ini diperlukan. Sekarang mari kita bicara tentang parameter opsional.

Dengan parameter $args Anda dapat menggunakan array yang berisi argumen, untuk meneruskan ke fungsi panggilan balik hook. Setiap nilai dalam array diteruskan ke callback sebagai parameter individual. Kunci array diabaikan.

Parameter $wp_error dapat digunakan untuk mengembalikan WP_Error saat gagal. Nilai defaultnya salah.

Kode yang sesuai dalam file functions.php kami akan menjadi seperti ini:

 add_action( 'my_cronjob', 'my_cronjob_function' ); function my_cronjob_function() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } wp_schedule_single_event( time() + 3600, 'my_cronjob' );

Pada titik ini Anda seharusnya dapat melihat tugas kustom Anda dalam daftar.

Cara Menjalankan Pekerjaan sebagai Acara Berulang

Apa yang disediakan WordPress untuk skenario ini adalah fungsi wp_schedule_event() yang terstruktur seperti ini

wp_schedule_event( $timestamp, $recurrence, $hook, $args, $wp_error)

Parameter $timestamp adalah stempel waktu Unix yang diperlukan untuk kapan menjalankan acara berikutnya, $recurrence adalah string yang juga diperlukan untuk seberapa sering acara harus berulang dan $hook adalah kait tindakan yang harus dijalankan saat acara dijalankan.

Parameter opsional $args dan $wp_error sama seperti sebelumnya.

Kode yang menjalankan pekerjaan dengan pengulangan, katakanlah, 1 jam adalah ini:

 add_action('my_hourly_cronjob', 'hourly_action'); function hourly_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_hourly_cronjob' )) { wp_schedule_event(time(), 'hourly', 'my_hourly_cronjob'); }

Kami menggunakan fungsi wp_next_scheduled() dalam pernyataan 'jika' seperti yang Anda lihat di atas, untuk menghindari kejadian duplikat dan memastikan tugas belum dijadwalkan sebelum melanjutkan dan menjalankannya.

Kami juga menggunakan label 'setiap jam' dari tabel terjadwal di bawah Pengaturan -> Jadwal Cron. Jika kita menginginkan kejadian yang berbeda, misalkan setiap 45 menit, pertama-tama kita harus membuat Jadwal Cron khusus bernama "45_minutes" dan kemudian menggunakannya dalam kode.

 add_action('my_45_cronjob', 'my_45_action'); function my_45_action() { wp_mail( 'EMAIL_ADDRESS', 'Test email', 'This is a test message' ); } if (! wp_next_scheduled ( 'my_45_cronjob' )) { wp_schedule_event(time(), '45_minutes', 'my_45_cronjob'); }

Pada titik ini Anda seharusnya dapat melihat tugas kustom Anda dalam daftar dengan perubahan yang diharapkan:

Kelemahan WP-Cron

Cara WordPress menangani pekerjaan cron memastikan tugas akan berjalan tetapi tidak mengizinkan Anda menentukan kapan karena, seperti yang kami katakan, pemeriksaan dilakukan saat pengunjung memuat halaman situs web Anda.

Jika kami menyampaikan kontrol pekerjaan cron pada waktu kunjungan pengguna, maka ada kemungkinan bahwa kami memiliki dampak negatif pada situs web tidak peduli ukurannya atau seberapa populernya itu.

Host situs web Anda dengan Pressidium

GARANSI UANG KEMBALI 60 HARI

LIHAT RENCANA KAMI

Dalam kasus situs web populer, Anda akan mengalami sejumlah besar lalu lintas karena eksekusi simultan dari sejumlah besar tugas. Ini dapat menghabiskan sumber daya server Anda dan memengaruhi kinerja atau bahkan menyebabkan waktu henti situs web Anda.

Dalam kasus situs web kecil, yang berarti sedikit pengunjung, wp-cron tidak akan terlalu sering dipicu, oleh karena itu beberapa tugas cron penting dapat ditunda untuk waktu yang cukup untuk menimbulkan efek samping, seperti tidak mengambil cukup cadangan, atau menunda memperbarui beberapa data yang dihitung pada pekerjaan cron.

Nonaktifkan WP-Cron

Jika cara WP-Cron menangani pekerjaan cron tidak memenuhi persyaratan Anda, dan Anda memerlukan tugas yang dijalankan tepat waktu, maka Anda harus menonaktifkan WP-Cron dan menggunakan layanan cron sisi server.

Jika menonaktifkan WP-Cron bukan merupakan opsi yang sudah disediakan oleh penyedia hosting Anda, inilah cara Anda dapat melakukannya sendiri.

Buka wp-config.php , yang terletak di bawah folder root instalasi Anda, dengan editor favorit Anda dan temukan baris yang terkait dengan awalan tabel database. Tepat setelahnya, masukkan baris ini:

 // /** * WordPress Database Table prefix. * * You can have multiple installations in one database if you give each * a unique prefix. Only numbers, letters, and underscores please! */ $table_prefix = 'wN0b9WQk_'; define('DISABLE_WP_CRON', 'true');

Ini wajib jika Anda ingin menggunakan penjadwal yang lebih stabil, seperti layanan cron Linux untuk memicu wp-cron.php kapan pun Anda mau.

Solusi Sisi Server: Layanan Cron Linux

Di Pressidium, kami menggunakan Linux Crontab untuk memicu WP-Cron setiap 5 menit. Ini adalah jumlah waktu yang tepat yang memastikan pekerjaan terjadwal Anda dieksekusi tepat waktu dan pada saat yang sama menghindari membebani situs web WordPress Anda. Ini tidak mengganggu penjadwal WP-Cron, tetapi hanya mekanisme pemicu.

Kesimpulan

Semoga artikel ini membantu Anda mengenal WordPress Cron, apa itu dan bagaimana cara kerjanya, dan bagaimana membuat jadwal dan tugas Anda sendiri. Pikirkan dua kali apakah WP-Cron cukup untuk kebutuhan Anda, sebelum memilih solusi sisi server lainnya.