php生成唯一數字id的方法彙總

2022-10-06 06:03:06 字數 2124 閱讀 1827

關於生成唯一數字id的問題,是不是需要使用rand生成乙個隨機數,然後去資料庫查詢是否有這個數呢?感覺這樣的話有點費時間,有沒有其他方法呢?

當然不是,其實有兩種方法可以解決。

1. 如果你只用php而不用資料庫的話,那時間戳+隨機數是最好的方法,且不重複;

2. 如果需要使用資料庫,即你還需要給這個id關聯一些其他的資料。那就給mysql資料庫中的表的id乙個auto_increment(自增)屬性,每次插入一條資料時,id自動+1,然後使用mysql_insert_id()或last_insert_id()返回這個自增後的id。

當然,這個問題已經有現成的解決方法了,使用php uuid擴充套件就能完美解決這個問題,這個擴充套件能生成唯一的完全數字簽名。。

如果你不使用composer請參考

如果你的專案是基於composer搭建的,那麼請參考

具體的原始碼我就不搬運了,小夥伴們自己取下來就可以直接使用了

php生成唯一識別符號**示例:

< ?

//生成唯一識別符號

//sha1()函式, "安全雜湊演算法(sha1)"

function create_unique()

?>

php生成唯一識別符號函式描述及例子

< ?

$newhash = create_unique();

echo $newhash;

?>

再給大家分享乙個

/** 訊號量(semaphore)。

* 這是乙個包裝類,用於解決不同平台下對「訊號量」的不同實程式設計客棧現方式。

* 目前這個類只是象徵性的,在 windows 平台下實際是空跑(並沒有真的實現互斥)。

*/class semwrapper

} public function acquire()

return true;

} public function release()

return true;

}}/* * 順序號發生器。

*/class seqgenerator

// 開啟共享記憶體

$shm_id = shmop_open( self::shm_key, 'n', 0644, 4 );

if ( empty($shm_id) )

// 在共享記憶體中寫kzahmjt入初始值

$size = shmop_write( $shm_id, pack( 'l', $start ), 0 );

if ( $size != 4 )

// 關閉共享記憶體,釋放訊號量

shmop_close( $shm_id );

$sw->release();

return true;

} /**

* 產生下乙個順序號。

* @return int 產生的順序號

*/static public function next()

// 開啟共享記憶體

$shm_id = shmop_open( self::shm_key, 'w', 0, 0 );

if ( empty($shm_id) )

// 從共享記憶體中讀出順序號

$data = shmop_read( $shm_id, 0, 4 );

if ( empty($data) )

$arr = unpack( 'l', $data );

$seq = $arr[1];

// 把下乙個順序號寫入共享內程式設計客棧存

$size = shmop_write( $shm_id, pack( 'l', $seq + 1 ), 0 );

if ( $size !www.cppcns.com= 4 )

// 關閉共享記憶體,釋放訊號量

shmop_close( $shm_id );

$sw->release();

return $seq;

}}$a = seqgenerator::init( time() );

var_dump($a);

for ( $i=0; $i < 10; $i++ )

好了,今天就先到這裡吧,希望對大家學習php能夠有所幫助

本文標題: php生成唯一數字id的方法彙總

本文位址:

php 生成唯一ID

function guid factor prefix suffix 生成因子 機器毫秒,使用者瀏覽器與作業系統資訊,使用者ip,隨機因子,及自定義 factor 因子 原理 自定義 factor 因子 例如可使用使用者 user id 模組標識 product,order.字首 prefix 可用...

php生成唯一id

網上查了下,有很多的方法 1 md5 time mt rand 1,1000000 這種方法有一定的概率會出現重複 2 php內建函式uniqid uniqid 函式基於以微秒計的當前時間,生成乙個唯一的 id.w3school參考手冊有一句話 由於基於系統時間,通過該函式生成的 id 不是最佳的。...

PHP生成唯一ID

php自帶乙個生成唯一id的方法uniqid 我們還可以傳入引數,這個引數作為生成的唯一id的字首,該方法生成的id是基於當前時間微秒數生成的id,保證了id的唯一性。示例 prefix itbsl 說明 string uniqud string prefix bool more entropy f...