まず、「uniquid」は少し語弊がある名前です。なぜなら、uniquidはIDのユニークさを特に保証していないからです。
PHPマニュアルに、このように記載されています。
「警告
この関数は、ランダムな値を作るわけでもなければ予測不能な文字列を作るわけでもありません。 セキュリティを確保するためにこの関数を使ってはいけません。 予測不能でセキュアな ID を作りたい場合は、暗号学的にセキュアな乱数やハッシュを作る関数を利用しましょう。」
加えてこのようにも書いてあります。
「警告
この関数は、暗号学的にセキュアなトークンを返すわけではありません。 実際、追加のパラメータを何も渡さなければその返り値は microtime() とほとんど変わりません。暗号学的にセキュアなトークンを生成したければ openssl_random_pseudo_bytes() を使いましょう。」
more_entropyをtrueに設定することで、よりユニークな値を生成しますが実行時間は少しだけ長くなります。
マニュアルによれば、こうです。
「TRUE にすると、uniqid() は 返り値の最後にさらに別のエントロピーを (線形合同法を使用して) 追加します。これにより、結果が一意になる可能性を高めます。」
このように、ユニークになる可能性は高くなりますが、ユニークさを保証するわけではないことに注意しましょう。
ユニークな文字列を生成する方法はほかにもあると思います。暗号化のルーティンをいろいろ使い、ソルトを追加させるなど・・。もちろん目的次第ですが。
下記のメインPHPトピックにおいて、コメントをごらんにあることをお勧めします。
http://www.php.net/manual/ja/function.uniqid.php
私のお勧めは、何のためにユニークさを必要としているのか、セキュリティのためなのか(たとえば、暗号化やスクランブリングのルーティンに加えるためなのか)、ということを考え取り組むことです。それにより、どれほどのユニークさが必要なのかを判断することです。
最後に、スピードについても意識してみてください。これら全てを考慮したら、何が一番適しているのかが見えてくると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。