読者です 読者をやめる 読者になる 読者になる

Debian の PHP で UUID を生成する2つの方法

Ubuntuの場合の英語での解説はWeb上にたくさんあるけど, Debian について日本語で書いてもいいかな.

UUID=Universally Unique Identifierは, (確率的に)一意性が保証される文字列(を毎回ランダムに返す仕組み). ディスクのラベルや, git のコミットの名前に使われている.

PHPでは標準ではサポートされていないが, package を導入することで使う方法が2つある. この2つはOSSP(後者)とそうでないもの(前者)の2つの« 異なる »実装だと思うんだけど正しいだろうか. ちなみに Debian package uuid に含まれる コマンドラインツール uuid というのもあるけど, これは libossp-uuid を使っているので, 後者の実装.

なお, 両者に出てくる uuid_create 関数はたまたま名前が衝突しただけ. 引数も異なる.

PECL package uuid に含まれる uuid_create 関数

http://pecl.php.net/package/uuid

準備

PECLを使うために, Debian packages php-pear と php5-dev が必要.

pecl install uuid

する(Debian packages libuuid, uuid-dev やこれらが依存するものが必要). さらに, php.iniに extension=uuid.so を加える.

使用

例えば, UUID V4なら

$uuidstr=trim(uuid_create(UUID_TYPE_RANDOM));

Debian package php5-uuid に含まれるuuid_make, uuid_create, uuid_export 関数

http://packages.debian.org/lenny/php5-uuid

準備

Debian packages php5-uuid, libossp-uuid-dev やこれらが依存するものが必要.

使用

例えば, UUID V4なら

uuid_create(&$context);
uuid_make($context, UUID_MAKE_V4);
uuid_export($context, UUID_FMT_STR, &$uuid);
$uuidstr=trim($uuid);

uniqid

UUIDじゃないけど, PHP4,5 に標準で備わる, uniqid('',true) で間に合う場合もあるかも. Yさんに教えてもらいました. ありがとう.
http://php.net/manual/en/function.uniqid.php