一意の ID を生成するアプリケーション シナリオは、一時キャッシュ ファイル名、一時変数、一時セキュリティ コードなど、非常に一般的です。uniqid() 関数は、マイクロ秒単位の現在時刻に基づいて一意の ID を生成します。一意の ID の生成はマイクロ秒の時間に関連付けられているため、ID の一意性は非常に信頼できます。
生成された一意の ID によって返される文字列は、デフォルトでは 13 文字列の長さです。一意の ID のプレフィックスが定義されていない場合、md5() 関数と組み合わせると、最大 23 個の文字列長を返すことができます。この生成された ID の最大の利点は、特にデータベースに保存する必要がある一部の値についてソートできることです。
1. 関数プロトタイプ
string uniqid ( [string prefix [, bool more_entropy]] )
は、一意のIDのプレフィックスと長さを定義できます
<?php echo uniqid(); ?>2、md5() 関数と組み合わせて一意の ID
<?php echo md5(uniqid()); ?>出力: dfbc5c8c6438de075da28b3c8a413fd03、複数の一意の ID を生成マイクロ秒単位で測定
<?php echo uniqid(); echo uniqid(); echo uniqid(); ?>出力: 4bfd0e375396b
4bfd0e3753981
4bfd0e3753983
生成された結果から判断すると、一意の ID は並べ替え可能です。
uniqid() 関数を使用して一意の ID を生成すると、一時的な ID と永続的な一意の ID (ストレージ データベース) の両方を生成できます。
ps: php で一意の ID を生成するためのいくつかの解決策
このメソッドは一定の確率で繰り返されます2. PHP組み込み関数uniqid() uniqid()関数はマイクロ秒単位の現在時刻に基づいて一意のIDを生成します という一文があります。 w3school リファレンス マニュアル: 「システム時間に基づいているため、この関数によって生成される ID は最適ではありません。完全に一意の ID を生成するには、md5() 関数を使用してください。」 次のメソッドは同様の結果を返します: 5DDB650F-4389-F4A9-A100-501EF1348872
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() は、一意の ID を生成する PHP 独自のメソッドですが、PHP5 以降はなくなったようです。 3. 公式の uniqid() リファレンス マニュアルにはユーザーが提供したメソッドが含まれており、結果は同様です: {E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7}
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; }PHP uniqid の使用に関するその他の記事については、一意の ID を生成する関数については、PHP 中国語 Web サイトを参照してください。