membuat ID alfanumerik lima digit berurutan

Gambaran Umum:

Fungsi di bawah ini mengeluarkan ID acak. Saya menggunakan ini untuk memberikan alias konfirmasi untuk mengidentifikasi catatan. Namun, saya harus memeriksa tabrakan (betapapun kecilnya), karena kami hanya menggunakan panjang lima digit. Dengan karakter yang diizinkan yang tercantum di bawah ini, hasilnya sekitar 33 juta kombinasi plus. Akhirnya kita akan mendapatkan lima juta atau lebih catatan sehingga tabrakan menjadi masalah.

Masalah:

Memeriksa alias dupe tidak efisien dan sumber daya berat. Lima juta rekaman sangat banyak untuk dicari. Terutama ketika pencarian ini dilakukan secara bersamaan oleh pengguna yang berbeda.

Pertanyaan Saya:

Apakah ada cara untuk 'menaikkan otomatis' kombinasi yang diizinkan oleh fungsi ini? Artinya, saya hanya perlu mencari alias catatan terakhir dan beralih ke kombinasi berikutnya?

Keterbatasan yang Diakui:

Saya menyadari bahwa kodenya akan sangat berbeda dari fungsi di bawah ini. Saya juga menyadari bahwa mysql memiliki fitur penambahan otomatis untuk ID numerik, tetapi proyek tersebut memerlukan alias lima digit dengan karakter yang diizinkan '23456789ABCDEFGHJKLMNPQRSTUVWXYZ'. Tangan saya terikat pada masalah itu.

Fungsi Saya Saat Ini:

 public function random_id_gen($length)
 {
     $characters = '23456789ABCDEFGHJKLMNPQRSTUVWXYZ';
     $max = strlen($characters) - 1;
     $string = '';

     for ($i = 0; $i < $length; $i++) {
         $string .= $characters[mt_rand(0, $max)];
     }

     return $string;
 }
12
задан k to the z 13 June 2011 в 20:17
поделиться