[PHP-users 34223] Re: tempnamで生成されるユニークなファイル名について

Norio Suzuki suzuki @ tricorn.co.jp
2008年 12月 25日 (木) 12:59:17 JST


鈴木です。

At Thu, 25 Dec 2008 12:44:49 +0900,
小澤 直史 wrote:
> 
> (1)tempnam関数の名称が重複することは、同じサーバーを使ってい 
> るかぎり、
> 絶対に起こらないものなのでしょうか。

こちらを参照すると「ある時点では同じ名前を持つファイルが存在しないファ
イル名」と書いてあります。

http://www.linux.or.jp/JM/html/LDP_man-pages/man3/tmpnam.3.html

将来的に絶対に重複しないかどうかと言われると、そのような保証はないでしょう。


> (2)現在はユニークな部分が6文字のファイルが生成されるの 
> ですが、
> これはファイルが増えていくにつれ、増加していくものでしょうか。
> つまり、使えば使うほど、ファイル名は長くなっていくものなので 
> しょうか。

これは良く分かりません。



> (3)また、こういった関数の挙動はどのように調べたらいいのでしょ 
> うか。
> マニュアルには、
> 「疑問がある場合は、tempnam(3) に関するシステムドキュメ 
> ントを参照ください」
> となっていますが、これはどうやって読むものなのでしょう 
> か...。
> これを読めばand理解できれば、解決する問題なのだとも思う 
> のですが....。

Linux などであれば、man コマンドを使って、

  $ man tempnam 

で読めると思いますよ。

あるいは、先ほどの JM を利用させて頂くなど。

http://www.linux.or.jp/JM/



ただ、ユニークな ID を作るとなると、uniqid 関数とかよく使いますけどね。

http://jp2.php.net/manual/ja/function.uniqid.php

これにしても本当に重複しない ID を取得するには prefix にホスト名やら
(マルチスレッドでないなら)プロセス番号やらを付加する等の工夫が必要に
なりますが。

# そうしていくと、長さ制限の問題解決にはならないかも。。。

;; ---------------------------------------------------------
;; 鈴木則夫 <suzuki @ tricorn.co.jp>
;; トライコーン株式会社 http://www.tricorn.co.jp/
;; 160-0015 東京都新宿区大京町24 住友外苑ビル5F
;; Tel 03-5919-0041 Fax 03-5919-0042


PHP-users メーリングリストの案内