php生成唯一id的幾種解決方法
php 生成唯一id的幾種解決方法
網上查了下,有很多的方法
1、md5(time() . mt_rand(1,1000000));
這種方法有一定的概率會出現重複
2、php內建函式uniqid()
uniqid() 函式基於以微秒計的當前時間,生成一個唯一的 ID.
w3school參考手冊有一句話:”由於基於系統時間,通過該函式生成的 ID 不是最佳的。如需生成絕對唯一的 ID,請使用 md5() 函式”。
下面方法返回結果類似:5DDB650F-4389-F4A9-A100-501EF1348872
1
2
3
4
5
6
7
8
9
10
11
12
13
|
function uuid() {
if (function_exists ( `com_create_guid` )) {
return com_create_guid ();
} else {
mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.隨便數播種,4.2.0以後不需要了。
$charid = strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根據當前時間(微秒計)生成唯一id.
$hyphen = chr ( 45 ); // "-"
$uuid = `` . //chr(123)// "{"
substr ( $charid , 0, 8 ) . $hyphen . substr ( $charid , 8, 4 ) . $hyphen . substr ( $charid , 12, 4 ) . $hyphen . substr ( $charid , 16, 4 ) . $hyphen . substr ( $charid , 20, 12 );
//.chr(125);// "}"
return $uuid ;
}
} |
com_create_guid()是php自帶的生成唯一id方法,php5之後貌似已經沒有了。
3、官方uniqid()參考手冊有使用者提供的方法,結果類似:{E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public function create_guid( $namespace = `` ) {
static $guid = `` ;
$uid = uniqid( "" , true);
$data = $namespace ;
$data .= $_SERVER [ `REQUEST_TIME` ];
$data .= $_SERVER [ `HTTP_USER_AGENT` ];
$data .= $_SERVER [ `LOCAL_ADDR` ];
$data .= $_SERVER [ `LOCAL_PORT` ];
$data .= $_SERVER [ `REMOTE_ADDR` ];
$data .= $_SERVER [ `REMOTE_PORT` ];
$hash = strtoupper (hash( `ripemd128` , $uid . $guid . md5( $data )));
$guid = `{` .
substr ( $hash , 0, 8) .
`-` .
substr ( $hash , 8, 4) .
`-` .
substr ( $hash , 12, 4) .
`-` .
substr ( $hash , 16, 4) .
`-` .
substr ( $hash , 20, 12) .
`}` ;
return $guid ;
}
|
相關文章
- 生成分散式唯一ID的幾種解決方案分散式
- 分散式唯一ID的幾種生成方案分散式
- PHP生成隨機密碼的幾種方法PHP隨機密碼
- 探索 PHP 如何生成全域性唯一的 idPHP
- 解決DNS解析故障的幾種方法DNS
- php抓取頁面的幾種方法詳解PHP
- php呼叫webservice的幾種方法PHPWeb
- PHP 併發場景的幾種解決方案PHP
- MATLAB 生成exe 的幾種方法Matlab
- 幾種生成隨機數方法隨機
- 分散式系統中唯一 ID 的生成方法分散式
- php生成唯一隨機碼PHP隨機
- PHP 實現 Snowflake 生成分散式唯一 IDPHP分散式
- 全域性唯一ID生成常見的幾種方式和twitter/snowflake(雪花演算法)解析演算法
- jQuery動態生成html元素的幾種方法jQueryHTML
- DNS故障的幾種常見原因及解決方法DNS
- 寫出幾種IE6 BUG的解決方法
- 高併發下,php使用uniqid函式生成唯一識別符號的四種方案PHP函式符號
- 常用的幾種專案衝突管理的解決方法
- PHP 清除字串中間的空格的幾種方法PHP字串
- 常見的幾種IE6 BUG及其解決的方法
- Android生成ViewModel例項的幾種方式AndroidView
- php中生成標準uuid(guid)的方法PHPGUI
- 跨域的幾種解決方案跨域
- php連線mysql資料庫的幾種方法PHPMySql資料庫
- php中計算時間差的幾種方法PHP
- win8 C盤空間不足的幾種解決方法
- 解決Win2000 不能啟動的幾種方法
- 【知識積累】隨機數生成的幾種方法隨機
- 分散式唯一id生成策略分散式
- 高精度定位的幾種解決方案
- js 非同步的幾種解決方案JS非同步
- PHP 判斷陣列是否為空的幾種方法PHP陣列
- PHP頁面跳轉幾種實現方法PHP
- MAC將 /etc/sudoers檔案修改錯後的幾種解決方法Mac
- 盤點 Spring Boot 解決跨域請求的幾種方法Spring Boot跨域
- 幾個報錯的解決方法
- 分散式唯一 ID 生成器分散式