Membuat Generator id Unik seperti id Video YouTube di PHP
Dalam sebuah tabel di database, seringkali kita membuat kolom bernama id sebagai primary key. Kadang kolom tersebut kita berikan fungsi auto increment agar otomatis terisi dengan angka. Namun, kali ini kita coba menggunakan karakter yang di-generate dari nilai waktu per milidetik.
1. Mengambil Niali Unik dari Fungsi Waktu
Kita dapat menggunakan fungsimicrotime()
atau fungsi time()
untuk mendapatkan nilai unik. Nilai ini, senantiasa akan berubah terus, seiring dengan perubahan waktu.
Dari percobaan di atas, fungsi
microtime()
mengembalikan nilai unik setiap kali dipanggil. Sementara itu, fungsi time()
akan mengembalikan nilai unik setiap detik.
Saya sarankan menggunakan fungsi
microtime()
, karena fungsi ini mengembalikan nilai unik per milidetik.2. Konversi Nilai Unik
Sebenarnya, kita bisa saja menggunakan nilai kembalian darimicrotime()
dan time()
untuk membuat id unik. Tapi, karena kita ingin membuat id seperti YouTube, maka kita harus lakukan konversi ke dalam bentuk lain. Kita bisa menggunakan fungsi base_convert()
untuk membuatnya.
Fungsi
base_convert()
Sebenarnya untuk mengubah basis dari sebuah nilai. Pada contoh di atas, parameter angka 10
merupakan panjang nilai yang dihasilkan. Sedangkan angka 36
adalah basisnya.Contoh lain, panjang
8
dengan basis 16
(bilangan heksadesimal):
3. Kode Generator
Kita sudah dapat apa yang kita inginkan, sekarang kita buat kode generatornya. Pada generator ini kita gunakan basis36
dengan panjang 10
.<?php
$id = base_convert(microtime(false), 10, 36);
?>
Kita bisa manfaatkan variabel tersebut untuk penyimpanan ke tabel database. Contoh:<?php
$id = base_convert(microtime(false), 10, 36);
mysqli_query($koneksi, “INSERT INTO video (id, judul, url) VALUE (’$id’,‘Petani Kode - Intro’,‘petani-kode.mp4’)”);
?>
Basis 36
maksudnya: ‘abcdefghijklmnopqrstuvwxyz0123456789
’ = 36
karater.Kesimpulan
Id unik untuk primary key seperti YouTube dibuat dari konversi nilai unik dari fungsimicrotime()
atau time()
ke dalam bentuk basis 36
. Konversi basis dari sebuah nilai menggunakan fungsi base_convert()
.Referensi: Stack Overflow