php產生唯一ID的四種方法介紹

王林
發布: 2023-03-09 12:52:01
轉載
19610 人瀏覽過

php產生唯一ID的四種方法介紹

工作中使用到唯一ID的場景非常多,例如臨時快取檔案、臨時變數、臨時安全碼等。

uniqid()函數是基於以微妙計的當前時間,產生一個唯一的ID。由於產生唯一ID與微妙時間關聯,因此生成ID的唯一性非常可靠。

產生的唯一ID預設回傳的字串有13個字元長,如果再結合MD5()函數,產生的唯一ID可靠性會更高,這種產生的ID比隨機性的ID最大優點在於可實現排序,特別是一些需要儲存在資料庫中的值。當然在這裡也可以加入隨機數字。

以下主要介紹4種產生唯一ID的方法:

1、md5(time().mt_rand(1,1000000))

注意:這個方法有一定的機率會出現重複

2、php內建函數uniqid()

uniqid()函數基於以微妙的當前時間,產生一個唯一的ID。

  echo uniqid();
  echo uniqid();
  echo uniqid();
 OUTPUT:
    5a4b62dd4aeea
    5a4b62dd4aff7
    5a4b62dd4b069
登入後複製

 w3school參考手冊有一句話:"由於基於系統時間,透過此函數產生的 ID 不是最佳的。如需產生絕對唯一的 ID,請使用 md5() 函數"。

(免費影片教學:php影片教學

3、結合md5()函數產生一個唯一的ID

     echo md5(uniqid());
OUTPUT:
    0ac3d6e99b7f5290c93d730eaf9d7d94
登入後複製

4、手動去處理,官方給予的案例

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;
     }
登入後複製

返回結果類似:E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7

相關推薦:php教程

#

以上是php產生唯一ID的四種方法介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!