site transients wp site transients wp

Cara mudah hapus entri _site_transient_ dari database

Dalam WordPress, transients adalah data sementara yang disimpan di tabel wp_options dengan nama yang diawali dengan _transient_ atau _site_transient_.

Transients digunakan untuk menyimpan hasil dari operasi yang mahal secara waktu, seperti permintaan API eksternal atau query database kompleks, sehingga data tersebut bisa digunakan kembali tanpa perlu melakukan operasi yang sama berulang kali.

Selain itu, transients menyederhanakan pengelolaan cache dengan menyediakan metode yang mudah untuk menyimpan dan mengelola data cache dalam WordPress. Pengembang dapat dengan mudah mengatur durasi kedaluwarsa untuk setiap transient, memungkinkan data cache diperbarui secara otomatis setelah periode tertentu tanpa memerlukan intervensi manual.

Dengan menggunakan transients, waktu akses data menjadi lebih cepat karena data yang sudah di-cache dapat diakses langsung, mengurangi latensi yang biasanya disebabkan oleh operasi I/O atau pemrosesan yang berat.

Cara kerja transients

+---------------------+
|  User Request       |
|  (e.g., page load)  |
+---------------------+
           |
           v
+---------------------+
| Check Transient     |
| in wp_options       |
+---------------------+
           |
           v
+---------------------+
| Transient Exists?   |
| (Cached Data)       |
+---------------------+
      |         |
      | No      | Yes
      v         v
+---------------------+    +---------------------+
| Perform Expensive   |    | Use Cached Data     |
| Operation (e.g.,    |    | (from Transient)    |
| API Call, Query)    |    +---------------------+
+---------------------+              |
           |                         |
           v                         v
+---------------------+    +---------------------+
| Store Data in       |    | Continue with        |
| Transient           |    | Cached Data          |
| (with Expiry Time)  |    +---------------------+
+---------------------+
           |
           v
+---------------------+
| Return Response     |
| to User             |
+---------------------+

Penjelasan diagram

  1. User Request: Pengguna membuat permintaan ke situs WordPress, misalnya saat memuat halaman.
  2. Check Transient in wp_options: WordPress memeriksa tabel wp_options untuk melihat apakah data yang dibutuhkan sudah ada sebagai transient.
  3. Transient Exists?: Jika transient dengan data yang relevan ada dan belum kadaluarsa, WordPress menggunakan data yang tersimpan. Jika tidak, proses berikutnya dilakukan.
  4. Perform Expensive Operation: Jika transient tidak ada atau sudah kadaluarsa, WordPress melakukan operasi yang memerlukan waktu atau sumber daya yang signifikan, seperti permintaan API eksternal atau query database yang berat.
  5. Store Data in Transient: Setelah operasi selesai, hasilnya disimpan dalam transient di tabel wp_options dengan waktu kadaluarsa tertentu. Ini memungkinkan data tersebut digunakan kembali tanpa perlu melakukan operasi berat lagi.
  6. Return Response to User: WordPress mengembalikan respons ke pengguna, baik menggunakan data yang di-cache dari transient atau hasil dari operasi yang baru dilakukan.

Mengapa transients menumpuk di database?

Transients di WordPress dapat menumpuk di tabel wp_options (atau nama tabel khusus misalnya fufufafa_options, jika awalan tablenya fufufafa_) jika durasi kadaluarsa tidak ditetapkan dengan benar atau terlalu lama. Dalam hal ini, data transient akan tetap ada meskipun sudah tidak digunakan lagi.

Masalah juga bisa terjadi pada proses pembersihan otomatis yang dimiliki WordPress untuk menghapus transients yang sudah kadaluarsa. Mekanisme ini tidak selalu berjalan secara teratur atau mungkin tidak berfungsi dengan baik pada beberapa konfigurasi server.

Penggunaan plugin atau tema yang tidak efisien juga dapat menyebabkan penumpukan transients. Beberapa plugin atau tema mungkin menyimpan terlalu banyak transients atau tidak membersihkannya dengan benar setelah data tidak lagi diperlukan.

Selain itu, penyimpanan transient yang tidak tersinkronisasi dapat terjadi jika ada masalah dengan database atau konfigurasi server. Dalam kasus seperti ini, transients yang sudah kadaluarsa mungkin tidak dihapus secara otomatis, yang mengakibatkan penumpukan data.

Pengembang juga mungkin secara manual menyimpan transient tanpa memperhatikan durasi atau pembersihan otomatis, yang dapat menyebabkan penumpukan data di tabel wp_options.

Cara membersihkan transients

Untuk mengelola transients dengan baik, kita dapat memanfaatkan fitur crontab yang ada di Linux, BSD, atau panel seperti CloudPanel & cPanel. Sebelum membuat cronjob, kita harus membuat shell script terlebih dahulu agar cronjob dapat dieksekusi.

# Shell script ini ditujukan untuk menghapus entri _site_transient_ dari tabel wp_options di 
# database wordpressdb, silakan sesuaikan dengan kebutuhan masing-masing. 

#!/bin/bash

# Konfigurasi database
DB_HOST="localhost"
DB_USER="username_db"
DB_PASS="password_db"
DB_NAME="wordpressdb"
TABLE_NAME="wp_options"
LOG_FILE="/var/log/cleanup-transients.log"
VERBOSE=false

# Fungsi untuk log
log() {
    local message="$1"
    echo "$(date +'%Y-%m-%d %H:%M:%S') - $message" | tee -a $LOG_FILE
}

# Fungsi untuk pesan verbose
verbose() {
    if [ "$VERBOSE" = true ]; then
        echo "$1"
    fi
}

# Tampilkan bantuan
show_help() {
    echo "Usage: $0 [-v] [-l <log_file>]"
    echo ""
    echo "Options:"
    echo "  -v            Enable verbose mode."
    echo "  -l <log_file> Specify custom log file (default: /var/log/cleanup-transients.log)."
}

# Parse argumen command line
while getopts ":vl:" opt; do
    case $opt in
        v)
            VERBOSE=true
            ;;
        l)
            LOG_FILE="$OPTARG"
            ;;
        \?)
            echo "Invalid option: -$OPTARG" >&2
            show_help
            exit 1
            ;;
        :)
            echo "Option -$OPTARG requires an argument." >&2
            show_help
            exit 1
            ;;
    esac
done

# SQL untuk menghapus entri _site_transient_
SQL_QUERY="DELETE FROM $TABLE_NAME WHERE option_name LIKE '_site_transient_%';"

# Mulai proses pembersihan
log "Mulai membersihkan entri _site_transient_ dari tabel $TABLE_NAME di database $DB_NAME."
verbose "Menghubungkan ke database $DB_NAME pada $DB_HOST..."

# Jalankan perintah SQL
mysql -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME -e "$SQL_QUERY"
if [ $? -eq 0 ]; then
    log "Pembersihan entri _site_transient_ dari tabel $TABLE_NAME berhasil."
    verbose "Berhasil menghapus entri _site_transient_."
else
    log "Terjadi kesalahan saat membersihkan entri _site_transient_."
    verbose "Kesalahan terjadi saat menjalankan query."
    exit 1
fi

log "Proses pembersihan selesai."
verbose "Log disimpan di $LOG_FILE."

Shell script diatas sudah dilengkapi fitur verbose, yaitu untuk melihat informasi yang lebih rinci tentang proses atau perintah yang sedang dijalankan. Selain itu, script tersebut menyimpan log yang dapat dilihat setiap saat menggunakan perintah tail, lokasinya ada pada direktori /var/log/, Anda dapat mengubahnya ke direktori lain, misalnya direktori home untuk memudahkan navigasi dan tujuan lainnya.

Jangan lupa buat sebagai executable, gunakan perintah chmod +x cleanup-transients.sh agar membuat file tersebut dapat dijalankan secara langsung atau melalui cronjob.

Jalankan dari crontab

Untuk pengguna cPanel, Anda dapat menggunakan fitur Crontab dengan membuka menu ini pada cPanel Anda.

01 cpanel cron job advanced
Cara membuka Crontab di cPanel. Image credit: cPanel

Jika Anda mengalami kesulitan, silakan kunjungi halaman ini. Pengguna CloudPanel dapat mengaktifkannya melalui fitur Cron Job pada situs Anda.

adding a cron job
Fitur Cron Job di CloudPanel. Image credit: CloudPanel

Jika Anda mengalami kesulitan, kunjungi halaman dokumentasi CloudPanel.

Untuk pengguna stack Linux atau BSD yang tidak menggunakan panel, seperti kami di MauCariApa.com, dapat menggunakan fitur cron yang ada di Linux atau BSD. Cukup buka crontab menggunakan perintah sudo crontab -e, masukkan entrinya seperti berikut (pilih saja salah satu):

  1. Jalankan script setiap 4 jam:
    0 */4 * * * /path/to/your/cleanup-transients.sh
  2. Jalankan script setiap 6 jam:
    0 */6 * * * /path/to/your/cleanup-transients.sh
  3. Jalankan script setiap 12 jam:
    0 */12 * * * /path/to/your/cleanup-transients.sh
  4. Jalankan script setiap 24 jam:
    0 0 * * * /path/to/your/cleanup-transients.sh

Simpan dengan Ctrl+X kemudian tekan Enter jika menggunakan editor Nano, atau kombinasi huruf :wq jika menggunakan editor Vim. Pastikan direktori /path/to/your/ diganti dengan direktori yang sesuai untuk file cleanup-transients.sh (pastikan izin dan nama filenya benar).

Kesimpulan

Transients adalah fitur penting dalam WordPress yang membantu meningkatkan performa situs dengan menyimpan data sementara dan mengurangi beban server. Dengan menggunakan transients secara efektif, Anda dapat mempercepat akses data dan mengurangi latensi, sehingga memberikan pengalaman pengguna yang lebih baik dan efisiensi yang lebih tinggi dalam pengelolaan cache.

Namun jika tidak dibersihkan secara efektif, dapat terjadi penumpukan transients di tabel wp_options yang dapat menyebabkan database menjadi sesak dan ukurannya membengkak dikarenakan transients yang sudah tidak digunakan lagi. Dengan mengelola durasi kadaluarsa, Anda dapat mengurangi penumpukan dan menjaga performa database WordPress tetap optimal.


Kami dapat menghasilkan komisi dari produk atau layanan yang Anda beli menggunakan tautan dari situs web kami, selengkapnya.

Anda dapat mendukung situs ini agar tetap aktif dan terus memberikan dampak positif bagi pembaca.

Kritik, saran? Klik tombol



Artikel Terkait

Saran artikel ini dibuat oleh Kudatuli Project


ShopBack

ShopBack adalah aplikasi dan situs web yang memberikan cashback dan promo kepada pengguna yang berbelanja online

Leave a Reply

Your email address will not be published. Required fields are marked *