この記事の例では、PHP での uniqid() 関数の使用法について説明します。参考のためにみんなで共有してください。具体的な手法の分析は次のとおりです:
uniqid() 関数は、マイクロ秒単位の現在時刻に基づいて一意の ID を生成します。
注: この関数によって生成される ID はシステム時間に基づいているため、最適とは言えません。完全に一意の ID を生成するには、md5() 関数を使用します (この関数については、「文字列関数リファレンス」を参照してください)。
次のコードを見てみましょう:
uniqid と時間の関係を理解すると、uniqid をより幅広い用途で使用できるようになります。たとえば、uniqid をフォーラムの投稿のファイル名として使用することができます。
上記のコードと以下のコードを組み合わせると、その機能は非繰り返しの 32 ビット文字を生成することだと思います
uniqid() 関数自体はマイクロ秒単位の現在時刻に基づいているため、同時実行性が高い状況では重複が確実に発生します。解決策は、この前提の下で乱数を生成し、両方の組み合わせにより新しい数値を生成することです。重複の可能性を減らします。さらに正確にしたい場合は、クライアントの IP の MD5 コードを追加して一緒に生成することもできます。この方法では、重複の可能性は非常に低く、重複はほとんどないと言えます。
は値を 1 つだけ生成します。
構文: string uniqid(string prefix);
戻り値: String
関数の種類: エンコード処理
内容説明
この関数は、現在のミリ秒と指定されたプレフィックス文字列に基づいて一意の文字列を生成します。パラメーターのプレフィックスは、最大 114 文字までの先行する文字列です。
echo uniqid(); uniqid は常に長さが 13 の変化する 16 進数であることがわかります。
echo hexdec(uniqid())/(time()+microtime());
?>
出力は基本的に 1048576 程度です。
uniqid は、マイクロ秒単位の精度の現在時刻に 1048576 (2 の 20 乗) を掛けて、最終的に 16 進数に変換したものであると結論付けることができます。
uniqid と時間の関係を理解すると、uniqid をより幅広い目的に使用できるようになります。たとえば、テキスト フォーラムでは、uniqid を投稿のファイル名として使用できます。
投稿インデックスでは、時間ごとに投稿を簡単に検索できます。
参考:hi.baidu.com/...7.html
セーフティホースを検出する際に使用されます
?>
乱数の場合にも使用されます