ユニークなIDを生成する方法

CakePHP 1.2RC3を利用しています。

ユーザ登録などでアカウントアクティベーションする際に、ユニークなIDを含むURLを発行してメールで送信し、そのURLにアクセスさせる方法は良く見られます。

ユニークIDをphpで出力する一例として

md5(uniqid(rand(),1));

という方法などでmd5関数の出力結果を用いる場合があります(下記URL参照)
http://d.hatena.ne.jp/kakku22/20081016/1224154493



CakePHPを使って、ユニークなIDを簡単に発行する方法は、コントローラで

 $uuid = String::uuid();

とすると、$uuidに

494955da-0a5c-408f-ab20-0778ff2fc4a6

というようなユニークIDが含まれます。

これはCakePHPのcake/libs/string.phpのuuidメソッドを利用しています。

uuidメソッドのソースコードを見ると、サーバのIPアドレス、プロセスIDの取得の後に、下記のコードでuuidを生成しています。

list($timeMid, $timeLow) = explode(' ', microtime());
$uuid = sprintf("%08x-%04x-%04x-%02x%02x-%04x%08x", (int)$timeLow, (int)substr($timeMid, 2) & 0xffff,
			mt_rand(0, 0xfff) | 0x4000, mt_rand(0, 0x3f) | 0x80, mt_rand(0, 0xff), $pid, $node);

return $uuid;

この実装は、下記のRFCに準拠しています。
http://www.ietf.org/rfc/rfc4122.txt