作成日:2018-03-14, 更新日:2019-08-27
基本
現在のマイクロ秒を元にゴニョゴニョしてくれる。
echo uniqid();
※13桁で生成される。
マイクロ秒なので、同一の「一意なID」が生成されることがある。
言葉遊びというか疑問
「uniqid()」は「一意な ID を生成する」というんだけど・・・。
「一意なID」ってのは「重複しないID」って意味なんじゃないの?
それなのに「同じマイクロ秒で同じ ID が生成されてしまう可能性」があるってのはどういうコトなんだろう?
日本語訳がおかしいだけなのかな。
サンプル
まとめて実行した結果。
・第一引数 - 接頭詞をつける
・第二引数 - 別のエントロピーを (線形合同法を使用して) 追加。・・・「結果が一意になる可能性を高める」そうだ。
echo uniqid() | 5aa8c3e89e40c |
---|---|
echo uniqid('') | 5aa8c3e89e40c |
echo uniqid('pre_') | pre_5aa8c3e89e40c |
echo uniqid(mt_rand()) | 12977797845aa8c3e89e40c |
echo uniqid(mt_rand(100,999)) | 3645aa8c3e89e40c |
echo uniqid('', true) | 5aa8c3e89e40c9.69827703 |
単純にいくなら「uniqid(mt_rand(100,999))」だと桁数も揃って使い勝手が良さそうな気がする。
複数のホストで同時にID発行させるなら「uniqid('〇〇〇'.mt_rand(100,999))」としとけば、各ホストで違いも分かっていいんじゃないかな。