transient di database WP

Apa itu _transient_ WordPress dan Bagaimana Cara Mengatasinya?

Di database WordPress, sering kali ditemukan tabel wp_options, baris bertuliskan “_transient_”, “_transient_timeout_”, dan sejenisnya. Mungkin Anda termasuk satu dari sekian banyak orang yang bingung setelah melihat munculnya baris-baris itu. Dari mana munculnya? Bagaimana mengatasinya? Nah, saya akan coba membahasnya kali ini.

transient di database WP

Apa itu Transient API di WordPress?

Baris-baris _transient_ di database situs WordPress muncul di tabel wp_options. Baris ini muncul karena adanya Transient API di WordPress. Transient API sendiri merupakan cara standar dalam WordPress untuk menyimpan data yang ter-cache. Data ini sifatnya sementara, dan pada waktu-waktu tertentu akan expired (kadaluarsa), lalu akan otomatis terhapus dari database. Ada banyak plugin yang bisa menghasilkan baris _transient_ di database, seperti plugin-plugin statistik, plugin tracking keyword, plugin cache, dan lain-lain.

Data transient yang dihasilkan pada dasarnya akan expired, lalu terhapus secara otomatis. Meski demikian, sering kali pula data ini dihasilkan lebih cepat ketimbang dihapus, sehingga mengakibatkan meningkatnya penggunaan database: tabel wp_options jadi padat, sehingga CPU usage meningkat, lalu akses situs melambat, terjadi error pada server, dan lain-lain.

Bagaimana cara menghapus data yang dihasilkan Transient API di WordPress?

Nah, agar Transient API ini tidak menjadi masalah, data _transient_ yang expired harus dihapus sesegera mungkin. Caranya adalah sebagai berikut:

/*-----*/
/*  Delete_expired_db_cache
/*-----*/
add_action( 'wp_scheduled_delete', 'delete_expired_db_transients' );
function delete_expired_db_transients() {
    global $wpdb, $_wp_using_ext_object_cache;
    if( $_wp_using_ext_object_cache )
        return;
    $time = isset ( $_SERVER['REQUEST_TIME'] ) ? (int)$_SERVER['REQUEST_TIME'] : time() ;
    $expired = $wpdb->get_col( "SELECT option_name FROM {$wpdb->options} WHERE option_name LIKE '_transient_timeout%' AND option_value < {$time};" );
    foreach( $expired as $transient ) {
        $key = str_replace('_transient_timeout_', '', $transient);
        delete_transient($key);
    }
}

Copy dan paste kode di atas ke file functions.php pada theme Anda. Setelah itu, data _transient_ yang expired akan segera terhapus, seiring dengan bekerjanya wp-cron.php pada instalasi WordPress.

Bagaimana Apabila Data Transient Sangat Besar dan Banyak?

Cara di atas sebenarnya bisa mengatasi hampir sebagian besar masalah membludaknya data _transient_ akibat Transient API di WordPress. Namun, cara itu hanya untuk menghapus data _transient_ yang sudah expired. Nah, apabila ingin menghapus data _transient_ seluruhnya, maka yang perlu dilakukan adalah sebagai berikut:

  1. Login ke cpanel web hosting situs WordPress Anda;
  2. Masuk ke PhpMyAdmin untuk mengelola database;
  3. Pada halaman PhpMyAdmin, pilih database;
  4. Masuk ke tab “SQL”, lalu paste dan eksekusi kode perintah berikut ini:
  5. DELETE FROM `wp_options` WHERE `option_name` LIKE ('%\_transient\_%');
  6. Optimize tabel database setelah semua proses selesai.

Cara ini akan menghapus SELURUH data _transient_ yang dihasilkan Transient API pada tabel wp_options. Setelah data _transient_ dihapus, database jadi lebih lega, ukurannya jadi jauh berkurang.

Ssst… ada baiknya melakukan backup database terlebih dahulu sebelum mulai penghapusan data-data transient.

Nah, selamat mencoba. Semoga tipsnya bermanfaat.

Baca pula tulisan saya sebelumnya pada topik WordPress dan Tips AdSense.

 

Bekerja online dan mengelola website. Sekarang tinggal sambil berwisata di Pulau Lombok.

No Comments

Leave a Comment