亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

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

2024-05-04 23:40:28
字體:
來源:轉載
供稿:網友

我們在平時的項目中,經常會遇到要使用php生成唯一數字id的環境,網上查了很多資料,其實還是有一定的可能性重復的,所以今天在這里分享下,個人最近研究這個問題的所得。

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

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

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

2. 如果需要使用數據庫,即你還需要給這個id關聯一些其他的數據。那就給MySQL數據庫中的表的id一個AUTO_INCREMENT(自增)屬性,每次插入一條數據時,id自動+1,然后使用mysql_insert_id()或LAST_INSERT_ID()返回這個自增后的id。

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

如果你不使用composer請參考https://github.com/lootils/uuid,

如果你的項目是基于composer搭建的,那么請參考https://github.com/ramsey/uuid

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

PHP生成唯一標識符代碼示例:

 

 
  1. < ?  
  2. //生成唯一標識符  
  3. //sha1()函數, "安全散列算法(SHA1)"  
  4. function create_unique() {  
  5. $data = $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']  
  6. .time() . rand();  
  7. return sha1($data);  
  8. //return md5(time().$data);  
  9. //return $data;  
  10. }  
  11. ?>  

PHP生成唯一標識符函數描述及例子

 

 
  1. < ?  
  2. $newhash = create_unique();  
  3. echo $newhash;  
  4. ?> 

再給大家分享一個

 

 
  1. /* 
  2. * 信號量(Semaphore)。 
  3. * 這是一個包裝類,用于解決不同平臺下對“信號量”的不同實現方式。 
  4. * 目前這個類只是象征性的,在 Windows 平臺下實際是空跑(并沒有真的實現互斥)。 
  5. */ 
  6. class SemWrapper 
  7. private $hasSemSupport; 
  8. private $sem; 
  9. const SEM_KEY = 1; 
  10.  
  11. public function __construct() 
  12. $this->hasSemSupport = function_exists( 'sem_get' ); 
  13. if ( $this->hasSemSupport ) { 
  14. $this->sem = sem_get( self::SEM_KEY ); 
  15.  
  16. public function acquire() { 
  17. if ( $this->hasSemSupport ) { 
  18. return sem_acquire( $this->sem ); 
  19. return true
  20.  
  21. public function release() { 
  22. if ( $this->hasSemSupport ) { 
  23. return sem_release( $this->sem ); 
  24. return true
  25.  
  26. /* 
  27. * 順序號發生器。 
  28. */ 
  29. class SeqGenerator 
  30. const SHM_KEY = 1; 
  31.  
  32. /** 
  33. * 對順序號發生器進行初始化。 
  34. * 僅在服務器啟動后的第一次調用有效,此后再調用此方法沒有實際作用。 
  35. * @param int $start 產生順序號的起始值。 
  36. * @return boolean 返回 true 表示成功。 
  37. */ 
  38. static public function init( $start = 1 ) 
  39. // 通過信號量實現互斥,避免對共享內存的訪問沖突 
  40. $sw = new SemWrapper; 
  41. if ( ! $sw->acquire() ) { 
  42. return false
  43.  
  44. // 打開共享內存 
  45. $shm_id = shmop_open( self::SHM_KEY, 'n', 0644, 4 ); 
  46. if ( empty($shm_id) ) { 
  47. // 因使用了 'n' 模式,如果無法打開共享內存,可以認為該共享內存已經創建,無需再次初始化 
  48. $sw->release(); 
  49. return true
  50.  
  51. // 在共享內存中寫入初始值 
  52. $size = shmop_write( $shm_id, pack( 'L', $start ), 0 ); 
  53. if ( $size != 4 ) { 
  54. shmop_close( $shm_id ); 
  55. $sw->release(); 
  56. return false
  57.  
  58. // 關閉共享內存,釋放信號量 
  59. shmop_close( $shm_id ); 
  60. $sw->release(); 
  61. return true
  62.  
  63. /** 
  64. * 產生下一個順序號。 
  65. * @return int 產生的順序號 
  66. */ 
  67. static public function next() 
  68. // 通過信號量實現互斥,避免對共享內存的訪問沖突 
  69. $sw = new SemWrapper; 
  70. if ( ! $sw->acquire() ) { 
  71. return 0; 
  72.  
  73. // 打開共享內存 
  74. $shm_id = shmop_open( self::SHM_KEY, 'w', 0, 0 ); 
  75. if ( empty($shm_id) ) { 
  76. $sw->release(); 
  77. return 0; 
  78.  
  79. // 從共享內存中讀出順序號 
  80. $data = shmop_read( $shm_id, 0, 4 ); 
  81. if ( empty($data) ) { 
  82. $sw->release(); 
  83. return 0; 
  84.  
  85. $arr = unpack( 'L', $data ); 
  86. $seq = $arr[1]; 
  87.  
  88. // 把下一個順序號寫入共享內存 
  89. $size = shmop_write( $shm_id, pack( 'L', $seq + 1 ), 0 ); 
  90. if ( $size != 4 ) { 
  91. $sw->release(); 
  92. return 0; 
  93.  
  94. // 關閉共享內存,釋放信號量 
  95. shmop_close( $shm_id ); 
  96. $sw->release(); 
  97. return $seq; 
  98.  
  99. $a = SeqGenerator::init( time() ); 
  100. var_dump($a); 
  101.  
  102. for ( $i=0; $i < 10; $i++ ) { 
  103. $seq = SeqGenerator::next(); 
  104. var_dump($seq); 

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


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产丝袜一区二区| 亚洲综合日韩中文字幕v在线| 亚洲在线视频福利| 亚洲第一福利网站| 欧美黄色性视频| 久久99久国产精品黄毛片入口| 美女黄色丝袜一区| 日韩在线欧美在线| 在线看国产精品| 国产精品高精视频免费| 在线观看日韩av| 最近2019中文字幕第三页视频| 久久偷看各类女兵18女厕嘘嘘| 久久91精品国产91久久久| 亚洲欧美视频在线| 欧美日韩免费一区| 亚洲一区二区三区视频| 国产一区私人高清影院| 成人久久一区二区三区| 色噜噜狠狠狠综合曰曰曰88av| 精品视频在线播放免| 亚洲的天堂在线中文字幕| 国产精品青青在线观看爽香蕉| 亚洲一区免费网站| 亚洲精品999| 亚洲视屏在线播放| 欧美亚洲成人精品| 精品视频在线播放免| 国产精品老女人精品视频| 91在线观看免费观看| 国产丝袜高跟一区| 欧美激情2020午夜免费观看| 精品国产老师黑色丝袜高跟鞋| 欧美在线免费观看| 欧美成人精品三级在线观看| 欧美韩国理论所午夜片917电影| 久久久久久国产精品美女| 国产91|九色| 国产欧美va欧美va香蕉在| 欧美激情日韩图片| 欧美亚洲另类制服自拍| 欧美日韩在线免费| 亚洲成人精品av| 精品成人69xx.xyz| 国产精品视频区1| 91高清在线免费观看| 成人观看高清在线观看免费| 欧美性猛交xxxx免费看久久久| 久久综合久中文字幕青草| 精品国产一区二区在线| 中文精品99久久国产香蕉| 日韩在线观看免费全| 欧美一级淫片播放口| 欧美猛男性生活免费| 538国产精品视频一区二区| 国产欧美最新羞羞视频在线观看| 国产日韩精品一区二区| 亚洲电影免费观看高清完整版在线观看| 欧美性xxxx极品hd满灌| 国产精品亚洲片夜色在线| 国产精品欧美在线| 欧美一级视频免费在线观看| 精品久久久久久电影| 亚洲天堂影视av| 亚洲午夜精品视频| 欧美在线视频在线播放完整版免费观看| 亚洲女人天堂视频| 2019日本中文字幕| 成人深夜直播免费观看| 国产成人高潮免费观看精品| 亚洲精品一区中文字幕乱码| 热草久综合在线| 色悠悠久久久久| 日韩亚洲国产中文字幕| 91亚洲精华国产精华| 国产美女高潮久久白浆| 亚洲福利在线观看| 欧美激情aaaa| 97精品久久久中文字幕免费| 在线观看国产精品日韩av| 日韩av在线网页| 国产日本欧美视频| 色综合伊人色综合网站| 国产精品国产福利国产秒拍| 国产精品爽爽爽爽爽爽在线观看| 色综合导航网站| 精品久久久久久久久国产字幕| 在线看片第一页欧美| 国产精品ⅴa在线观看h| 欧美小视频在线| 国产精选久久久久久| 18久久久久久| 成人av.网址在线网站| 欧美人与性动交| 色偷偷综合社区| 久久99精品久久久久久噜噜| 日日噜噜噜夜夜爽亚洲精品| 国产精品av电影| 久久99国产综合精品女同| 久久天天躁狠狠躁夜夜躁2014| 国产精品十八以下禁看| 亚洲国产精品成人精品| 国内精品在线一区| 欧美日韩精品在线视频| 国产精品九九久久久久久久| 亚洲精品中文字幕av| 欧美激情欧美狂野欧美精品| 色偷偷亚洲男人天堂| 中文字幕亚洲无线码在线一区| 欧美日韩另类字幕中文| 中文字幕一区日韩电影| 亚洲男子天堂网| 欧美另类暴力丝袜| 色www亚洲国产张柏芝| 亚洲第一福利网| 琪琪亚洲精品午夜在线| 97香蕉久久夜色精品国产| 久久精品成人一区二区三区| 久久久久久久久久久久av| 国产亚洲欧美另类中文| 久久久视频免费观看| 亚洲国产精品免费| 18性欧美xxxⅹ性满足| 亚洲图片制服诱惑| 色多多国产成人永久免费网站| 亚洲国产成人在线播放| 91精品国产自产在线| 久久久久成人网| 国产丝袜一区二区三区| 国产精品人人做人人爽| 亚洲色图美腿丝袜| 亚洲奶大毛多的老太婆| 成人精品久久久| 国产亚洲精品久久久久动| 欧洲成人午夜免费大片| 国产精品视频免费在线观看| 日韩精品小视频| 精品国产一区二区三区久久久狼| 日韩免费在线看| 国产精品一区专区欧美日韩| 91精品综合视频| 国产精品稀缺呦系列在线| 色综合伊人色综合网站| 精品高清一区二区三区| 国产一区玩具在线观看| 欧美中文在线视频| 亚洲无限乱码一二三四麻| 国产日韩欧美91| 亚洲天堂男人的天堂| 国产视频精品在线| 久久91精品国产91久久久| 精品久久久久久久久久国产| 日本不卡免费高清视频| 中文字幕在线看视频国产欧美| 亚洲第一av在线| 亚洲国产另类久久精品| 成人黄在线观看| 欧美xxxx14xxxxx性爽| 91精品国产高清久久久久久久久| 亚洲福利影片在线| 亚洲成人av在线| 丝袜美腿亚洲一区二区| 国产亚洲精品久久久久久| 久久99精品久久久久久噜噜|