Tutorial Sharing Database Terms StupidPie

Sharing db atau database adalah jalan keluar untuk menghemat space di server kita, apalagi kalau blog agc kita kebetulan berada di shared hosting. Tapi apa susah nya untuk sharing db? Kalau cuma sekedar mengubah beberapa input di wp-config.php adalah ide kalian, lebih baik diperhatikan dulu beberapa hal berikut:

  • URL/Domain sewaktu proses instalasi akan menjadi default URL/Domain pada database tersebut.
  • Prefix (wp_) adalah sebuah variabel unik yang hanya bisa di akses oleh sebuah domain/subdomain yang telah terdaftar.
  • Ketika ada domain lain yang tidak terdaftar meminta akses, akan terjadi konflik berdasarkan dari dua poin sebelumnya.

Kesimpulannya, sharing db pada wordpress adalah hal yang sangat tidak disarankan mengingat berbagai masalah yang sudah pasti akan terjadi.

Bagaimana Cara Sharing DB?

Di kesempatan kali ini, kita akan mempelajari beberapa hal penting supaya berapapun website yang kita punya dalam satu niche atau kategori, bisa berbagi database atau sharing db. Secara umum, ini hal – hal yang nanti kita pelajari:

  • Mengaktifkan fungsi Remote MysQL – Karena defaultnya hanya bisa diakses oleh localhost atau local IP, tentunya harus kita aktifkan dulu fungsi supaya bisa diakses dari IP lain.
  • Beberapa poin penting yang harus kita pahami –  Mempermudah cara berpikir dan mengerti apa tujuan kita.
  • Mengubah beberapa fungsi StupidPie – Agar berfungsi sesuai dengan keinginan kita.

Sebelum dimulai, harap dibaca baik – baik dari awal sampai akhir, karena proses ini termasuk gampang – gampang susah. Jangan lupa, google itu teman, bukan musuh kita. Yuk kita mulai!

Mengaktifkan Remote MysQL

Mengaktifkan Remote MysQL

Sebelum mengaktifkan remote mysql, lebih baik minta tolong kepada admin atau teman yang sudah lebih mengerti. Setiap host bisa saja memiliki aturan yang berbeda dan lebih spesifik, sangat disarankan untuk di diskusikan terlebih dahulu dengan contact support masing – masing.

Jangan lupa membuat backup terlebih dahulu untuk berjaga – jaga, cara backup database mysql bisa dipelajari disini atau untuk yang berbahasa indonesia bisa kesini.

Database yang akan kita gunakan adalah database yang sudah jadi dan dibuat oleh wordpress. Bagi yang belum punya atau belum bisa memilih database mana yang sebaiknya digunakan, silahkan pilih sekarang sebelum mengikuti tutorial ini lebih lanjut. Database dari website yang sudah punya banyak keywords akan lebih baik karena nantinya akan terlihat perbedaan antara single dan sharing db.

Kemungkinan besar tutorial ini akan dibutuhkan oleh pelaku AGC MP3. Bagi yang sudah mempraktekkan artikel Alphabet Categories Pada Theme Musicii dan Menampilkan Single Post Pada Theme Musicii, pastinya bisa lebih mantap lagi performa nya apabila mengikuti tutorial yang satu ini.

Oke, berikut adalah cara mengaktifkan Remote MysQL:

Secara default mysql hanya mengijinkan akses dari localhost, untuk mengubahnya kita harus mengganti isi dari file my.cnf di masing – masing server. File tersebut biasanya berada di:

/etc/mysql/my.cnf

Cari dan matikan fungsi berikut:

bind-address = 127.0.0.1

Caranya adalah dengan menambahkan awalan ‘#’ pada baris tersebut sehingga menjadi:

bind-address = 127.0.0.1

Lalu restart mysql dengan command:

sudo service mysql restart

Langkah Berikutnya – Memberikan Akses Pada IP Tertentu

Setiap IP yang akan meminta akses ke database utama harus kita daftarkan dulu secara manual sebelumnya (Hal ini penting untuk menjaga keamanan database utama kita, karena yang bisa akses nanti hanya IP yang sudah kita daftarkan).

Baca juga:   Creating Unique Web Content

Caranya adalah dengan command berikut:

sudo ufw allow from 1.2.3.4 to any port 3306 proto tcp

Jangan lupa mengganti 1.2.3.4 dengan IP server yang mau kita daftarkan.

Cara mengetahui apakah berhasil atau tidak bisa dengan command berikut:

mysql -u root -p -h 5.6.7.8

Contoh command diatas menggunakan user root, tapi sebaiknya dibuatkan user khusus dengan privilleges yang dibatasi sebelumnya. Jangan lupa ganti 5.6.7.8 dengan IP server Database Utama.

Contoh screenshot apabila sukses:

Remote MysQL Sukses

Selamat, kamu sudah berhasil mengaktifkan Remote MysQL! Lanjut ke step berikutnya!

Poin – Poin Penting

Sebelum melanjutkan tutorial sharing db, kita harus mengerti dulu apa yang menjadi tujuan kita. Seperti yang sudah dibahas di awal tadi, sharing db adalah sesuatu yang harusnya kita hindari.

Memang betul, tapi itu kalau niat kita ingin sharing db dalam artian keseluruhan. Maksudnya? Begini, maksud dari keseluruhan yaitu dari segi tampilan, content dan gambar semuanya sama dan semuanya online, yang pastinya akan menimbulkan konflik, dan mungkin bisa diwujudkan, tapi tidak di level – level dasar seperti kita ini :p

Kalau dipikir – pikir, kita tidak butuh seluruh isi database nya bukan? Ayo coba di sederhanakan cara berpikir nya, kita ini pemain agc, mengandalkan plugin StupidPie, yang bensin nya adalah?

Keywords

Sudah mulai mengerti? Belum? Oke begini detailnya..

Keywords/terms/queries adalah modal dasar yang menggerakkan berbagai fungsi di StupidPie, contohnya di dalam fungsi shortcode, stupidbot campaign, dll. Dan apabila tidak ada hal tersebut, sudah pasti tidak ada output nya, paham?

Dan keywords ini juga yang membuat bengkak ukuran database kita, ribuan atau puluhan ribu mungkin belum menjadi masalah.. Tapi kalau jumlahnya sudah mencapai ratusan ribu atau bahkan jutaan, size nya kurang lebih kisaran 200MB untuk satu table tersebut. Luar biasa..!! (Buat yang bingung, coba aja buat artikel yang ukuran nya 200MB waktu di  save.. isinya cuma boleh text ya..)

Untungnya StupidPie terprogram membuat sebuah table khusus untuk menampung jutaan keywords tadi, queries dari searchform maupun keywords yang kita inject secara manual semuanya di seleksi dan disusun secara rapi dalam sebuah table bernama:

wp_spp_terms (spp versi 2 ke atas)

Table inilah yang bisa dan akan kita manfaatkan! Table ini isinya tidak unik untuk sebuah website tertentu saja, semuanya bisa kita akses secara remote, asal kita mau belajar caranya!

Sudah mengerti ya, tujuan kita mengaktifkan Remote MysQL dan inti dari keseluruhan tutorial sharing database ini? Siap lanjut ke step berikutnya? Yuuk!

Mengubah Fungsi StupidPie

Mari kita telusuri lebih dalam, tool atau plugin yang sudah sekian lama kita gunakan ini. Bagaimana caranya supaya nanti StupidPie meminta akses ke Database Utama yang sudah kita aktifkan fungsi Remote-nya tadi.

Karena hal ini bersifat sensitif, dan kesalahan mengubah walaupun hanya satu kata bisa berakibat fatal, alangkah baiknya kalau dicoba di website tumbal saja, kalau berhasil baru bebas di terapkan dimanapun sesuka hati. Bagi yang melanjutkan, dianggap sudah mengerti konsekuensinya.

Sharing DB dan StupidPie

Seperti yang sudah dibahas di poin – poin penting, bagian dari Database Utama yang akan kita gunakan dibatasi hanya untuk table ‘wp_spp_terms‘ saja. Dan untuk tutorial ini, fungsi stupidpie yang akan kita rubah hanya fungsi yang bertanggung – jawab untuk: shortcode.

Pastikan mencoba di website tumbal, dan jangan lupa di backup dulu sebelumnya, sebelum melanjutkan ke step by step mengubah fungsi stupidpie! Terus share/like dulu ya sob, nanti otomatis terbuka tutorialnya 🙂

Baca juga:   Penempatan Kode SPP Dan Alasannya

Oke, sekarang kita mulai menyusun logika, apa yang mau kita ubah disini? Kira – kira file apa yang harus kita edit supaya tujuan kita tercapai?

Sebagai contoh di tutorial ini, yang akan kita ubah atau edit untuk memanfaatkan trik sharing DB ini adalah fungsi ‘shortcode‘ atau yang biasa kita tulis sebagai berikut:

[spp_random_terms count=10]

Untuk menentukan dimana fungsi yang bertanggung jawab untuk shortcode tersebut, bisa dilakukan dengan membuka dan meneliti satu per satu file yang ada di dalam folder StupidPie kita masing – masing.

Selengkapnya, bisa dipelajari dari berbagai sumber yang tersedia, untuk mempersingkat artikel, langsung saja kita buka file nya yang terletak di:

StupidPie\includes\spp-admin\stupidpie-shortcode.php

Sudah ketemu? Silahkan dibuka di text editor andalan masing – masing dan biarkan saja dulu. Sekarang kita perhatikan sebuah class default bawaan wordpress yang bertugas untuk akses database, yaitu:

$wpdb atau global $wpdb;

Penjelasan lengkap nya bisa dipelajari di dokumentasi wordpress. Intinya, ketika plugin ataupun tema eksternal ingin menggunakan data dari database, maka class tersebut harus di panggil terlebih dahulu.

Detil dan kegunaan dari fungsi – fungsi yang terdapat di class tersebut bisa dipelajari nanti. Sehubungan dengan tutorial sharing db kali ini, maka kita harus merubah cara stupidpie memanggil data, tujuan kita adalah supaya data dari Database Utama kita yang terpanggil. Caranya adalah dengan memanfaatkan salah satu fungsi dari class $wpdb tadi, yaitu ‘new‘ atau lebih lengkap nya:

/* $user = username Database Utama, $password = password Database Utama, $nama_database = nama Database Utama, $ip_server_database = ip server Database Utama */
$mydb = new $wpdb($user, $password, $nama_database, $ip_server_database);
/* $mydb = alias dari Database Utama untuk lebih mudah kita gunakan */
$mydb->show_errors();
$mydb->set_prefix('wp_');

Fungsi itu kemudian kita tambahkan ke dalam file ‘stupidpie-shortcode.php’ setelah class $wpdb di deklarasikan, sehingga hasilnya nanti seperti ini

Sebelumnya, untuk contoh, kita definisikan variabel nya sebagai berikut:

  • $user = ditipu
  • $password = ketipu
  • $nama_database = tertipu
  • $ip_server_database = 1.2.3.tipu

Hasil akhir nya kira – kira seperti ini

global $wpdb;
$mydb = new $wpdb('ditipu', 'ketipu', 'tertipu', '1.2.3.tipu');
$mydb->show_errors();
$mydb->set_prefix('wp_');

Beres? Belum, sob! Sabar dulu, berhubung sekarang database yang kita deklarasikan sudah berubah, fungsi yang tadinya mengacu pada $wpdb otomatis harus kita ubah juga. Mana saja yang kita ubah? Perhatikan berikut ini:

$sql = $wpdb->prepare("SELECT DISTINCT r1.`term` FROM `".$wpdb->prefix."spp_terms` AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM `".$wpdb->prefix."spp_terms`)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT %d;", $count);

$searchterms = $wpdb->get_results($sql);

Masih banyak yang mengacu pada fungsi lama kan(‘$wpdb‘)? Kita ubah semua sob, jadi hasilnya seperti ini:

$sql = $mydb->prepare("SELECT r1.`term` FROM `".$mydb->prefix."spp_terms` AS r1 JOIN (SELECT (RAND() * (SELECT MAX(id) FROM `".$mydb->prefix."spp_terms`)) AS id) AS r2 WHERE r1.id >= r2.id ORDER BY r1.id ASC LIMIT %d;", $count);

$searchterms = $mydb->get_results($sql);

Begitu sob! Gampang kan? Cukup sekian dulu ya, sob. Semoga tutorial ini berguna dan bermanfaat. Semangat AGC!

0 comments

  • Hello, guest