ブログのタイトルが「Javaとrubyと男と女」なのにPHPのエントリが一番多くなっちゃった。
とにかく一意な値が欲しいときないですか?そういうのにシーケンスとか使っている人もいるかもしれない。でもシーケンスって意外にかぶるんだよね。いくつまでいってるかわかんなくなったりして。
とにかく一意な値が欲しいときないですか?そういうのにシーケンスとか使っている人もいるかもしれない。でもシーケンスって意外にかぶるんだよね。いくつまでいってるかわかんなくなったりして。
そんなときはUUID(MSではGUIDとかいう)を使おう。
日本語でいうと「汎用一意識別子」というらしい。なんか、破壊力抜群の兵器っぽい。いや「汎用」あたりが強くなさそう。
UUIDはRFC4122で仕様が定義されていて、マイクロ秒から生成しましょう、とか、それだと被りやすいからMACアドレスも使いましょうとか、何通りかの生成方法がある。
大概が、マイクロ秒からのやつで大丈夫だと思われ。
PHPだとこう。
これはPHPのサイトに書いてあったのを丸パクリしたので、詳細の説明はそちらをみてください。
$guid = md5(uniqid(rand(), true));
マイクロ秒だけだと、さすがに被りすぎるだろうということで、乱数かましたりしてより一意性を確保している。だけど、一応理屈としては被る可能性はあるということは覚えておく必要はある。
なお、コメントにもあるようにcom_create_guid()という関数もあるんだけどWindows上じゃないとうごかない。
Javaでもrubyでも、たぶん大概の言語であるのでググってみてください。
コメントする