UUIDとかGUIDのススメ ~ PHPとかJavaでとにかく一意な値だけが欲しいとき~

| | コメント(0) | トラックバック(0)
ブログのタイトルが「Javaとrubyと男と女」なのにPHPのエントリが一番多くなっちゃった。

とにかく一意な値が欲しいときないですか?そういうのにシーケンスとか使っている人もいるかもしれない。でもシーケンスって意外にかぶるんだよね。いくつまでいってるかわかんなくなったりして。


 そんなときはUUID(MSではGUIDとかいう)を使おう。
日本語でいうと「汎用一意識別子」というらしい。なんか、破壊力抜群の兵器っぽい。いや「汎用」あたりが強くなさそう。

UUIDはRFC4122で仕様が定義されていて、マイクロ秒から生成しましょう、とか、それだと被りやすいからMACアドレスも使いましょうとか、何通りかの生成方法がある。

大概が、マイクロ秒からのやつで大丈夫だと思われ。
PHPだとこう。

        $guid = md5(uniqid(rand(), true));       

これはPHPのサイトに書いてあったのを丸パクリしたので、詳細の説明はそちらをみてください。
マイクロ秒だけだと、さすがに被りすぎるだろうということで、乱数かましたりしてより一意性を確保している。だけど、一応理屈としては被る可能性はあるということは覚えておく必要はある。
なお、コメントにもあるようにcom_create_guid()という関数もあるんだけどWindows上じゃないとうごかない。

Javaでもrubyでも、たぶん大概の言語であるのでググってみてください。



トラックバック(0)

このブログ記事を参照しているブログ一覧: UUIDとかGUIDのススメ ~ PHPとかJavaでとにかく一意な値だけが欲しいとき~

このブログ記事に対するトラックバックURL: http://hirop0164.s326.xrea.com/mt/mt-tb.cgi/258

コメントする


画像の中に見える文字を入力してください。

ブックマーク

はてなブックマークに追加 Yahoo!ブックマークに登録 del.icio.us に登録 ライブドアクリップに追加 Google Bookmarks に追加

Ajax: 2009年5月: 月別アーカイブ

このブログ記事について

このページは、ぴろしが2009年2月13日 17:34に書いたブログ記事です。

ひとつ前のブログ記事は「javascriptで入力フォームのユーザビリティをアップする。」です。

次のブログ記事は「Zend_Db_TableでDELETEするときに複数条件を指定する方法」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。