2017-11-23 10:38:42 1416瀏覽
php生成唯一ID的應(yīng)用場景非常普遍,如臨時(shí)緩存文件名稱,臨時(shí)變量,臨時(shí)安全碼等,uniqid()函數(shù)基于以微秒計(jì)的當(dāng)前時(shí)間,生成一個唯一的 ID。由于生成唯一ID與微秒時(shí)間關(guān)聯(lián),因此ID的唯一性非常可靠。
生成的唯一ID默認(rèn)返回的字符串有 13 個字符串長,如果再結(jié)合md5()函數(shù),生成的唯一ID可靠性將更高,這種生成的ID比隨機(jī)性的ID 最大優(yōu)點(diǎn)在于可實(shí)現(xiàn)排序,特別是一些需要存儲在數(shù)據(jù)庫中的值。當(dāng)然在這件也可以加入隨機(jī)數(shù)。還是手動的去處理生成唯一的id比較的好點(diǎn),盡量降低生成id的重復(fù)概率。下面主要介紹4種生成唯一ID的方法,供大家參考。
1、md5(time() . mt_rand(1,1000000)),這種方法有一定的概率會出現(xiàn)重復(fù)。
2、php內(nèi)置函數(shù)uniqid()
uniqid() 函數(shù)基于以微秒計(jì)的當(dāng)前時(shí)間,生成一個唯一的 ID.
1php
2echo uniqid();
3echo uniqid();
4echo uniqid();
5?>
6輸出:
4bfd0e375396b
4bfd0e3753981
4bfd0e3753983
w3school參考手冊有一句話:"由于基于系統(tǒng)時(shí)間,通過該函數(shù)生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函數(shù)"。
3、結(jié)合md5()函數(shù)生成一個唯一ID
1php
2echo md5(uniqid());
3?>
4輸出:dfbc5c8c6438de075da28b3c8a413fd0
4、手動去處理,官方給予的案例。
01public function create_guid($namespace = '') {
02 static $guid = '';
03 $uid = uniqid("", true);
04 $data = $namespace;
05 $data .= $_SERVER['REQUEST_TIME'];
06 $data .= $_SERVER['HTTP_USER_AGENT'];
07 $data .= $_SERVER['LOCAL_ADDR'];
08 $data .= $_SERVER['LOCAL_PORT'];
09 $data .= $_SERVER['REMOTE_ADDR'];
10 $data .= $_SERVER['REMOTE_PORT'];
11 $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
12 $guid = '{' .
13 substr($hash, 0, 8) .
14 '-' .
15 substr($hash, 8, 4) .
16 '-' .
17 substr($hash, 12, 4) .
18 '-' .
19 substr($hash, 16, 4) .
20 '-' .
21 substr($hash, 20, 12) .
22 '}';
23 return $guid;
24 }
25 返回結(jié)果類似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7
以上就是扣丁學(xué)堂淺談淺談如何使用php生成唯一ID的4種方法的詳細(xì)介紹,最后想要學(xué)習(xí)PHP開發(fā)技術(shù)的小伙伴不要猶豫了,扣丁學(xué)堂是你學(xué)習(xí)PHP培訓(xùn)的最佳選擇,想要PHP視頻教程的小伙伴現(xiàn)在就聯(lián)系我們的咨詢老師領(lǐng)取吧,機(jī)會總是留給有準(zhǔn)備的人的! 扣丁學(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號免費(fèi)領(lǐng)取丁豆獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>