[PHP-users 10706] Re: 完全にユニークな文字列の作成

Naofumi Kondoh php-users@php.gr.jp
Wed, 09 Oct 2002 17:13:07 +0900


ソフト工房の近藤です。

lavlav@paw.hi-ho.ne.jp wrote:
> みなさんこんばんわ、木田と申します。
> 
> 英数字が混雑した完全にユニークな
> 文字列の作成とはどうやるんでしょうか?

『完全』という言葉を、ユーザーの特定システム内で
完全にユニーク、即ち、重複を全く許さないと解釈
するならば、私なら次のようにします。

RDB で、UNIQ な SERIAL NUMBER を取得する。
PostgreSQL なら、SERIAL 型を使用すれば簡単。
数字だけでなく、英数字混じりにしたければ、適当な英字を
前後に追加するとか、数字を英数字に変換するルーチンを作る。

RDB を使いたくなければ、サーバー内の UNIX FILE を使用す
る方法もあります。この場合は、同時更新防止のため、UNIX
のファイルロックが必須。

『完全』ではなく、わずかな重複は許容できるという
のであれば、uniqid()関数を使う。

ユーザーの特定システム内でなく、複数のネット内で完全に
ユニークというのであれば、messageid の生成方法などを参考に、
使用者間で、規定を決めるしかないでしょう。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp
http://www.SOFTKOUBOU.co.jp/      http://www.shonan.ne.jp/~nkon/
2002-10-24(木)19:00-21:30 第7回 JPUG 業務アプリ分科会 勉強会
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/