[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 メーリングリストの案内