2011-08-09 1 views
1

PHPにUNIXの一時ファイル用のラッパーがありますか?または、関数にアクセスすると同時に2つの呼び出しのような原子性の問題があるのはtmpnam()です。原子的な問題がないtmpnam()の代替手段がありますか?

多くのスクリプトで一時ファイル名を大規模に生成したいと考えています。 tmpnam()の代替手段はありますか?

ありがとうございます!

[編集:意味するtmpnam()]

+1

あなたは 'tempnam'を意味しますか? – thetaiko

+0

良いコールブロ!! – KRB

答えて

1

特効薬はなく、2つのハック:

あなたは右のPHPから機能を呼び出すことができます。

<?php 
$tempFileName = exec("mktemp -t $prefix"); 
?> 

あなたも再帰を使用することができますこのような機能(汚いですが、動作するはずです:)):

<?php 
function tmpName($prefix, $path, $ext) { 
    $name = (string)$prefix.getmypid().microtime(true).$ext; 
    if (file_exists($path.'/'.$name)) { 
     return tmpName($prefix, $path, $ext); 
    } else { 
     return $name; 
    } 
} 
$tempFileName = tmpName('an arbitrary prefix','/tmp','.txt'); 
?> 
関連する問題