php创建临时文件tempnam与tmpfile区别

tempnam() 函数创建一个具有唯一文件名的临时文件,若成功,则该函数返回新的临时文件名,若失败,则返回false。

语法:tempnam(dir,prefix)

  1. function dir_wriable($dir) //自定义函数扩展建立临时文件
  2. {
  3. $test=tempnam("$dir","test_file"); //建立临时文件
  4. if($fp=@fopen($test,"w")) //如果文件成功打开
  5. {
  6. @fclose($fp); //关闭文件
  7. @unlink($test); //删除文件
  8. $wriable="ture"; //返回值为真
  9. }
  10. else
  11. {
  12. $wriable=false or die("cannot open $test!"); //返回值为假
  13. }
  14. return $wriable; //返回布尔型值
  15. }
  16. if(dir_wriable(str_replace('//','/',dirname(__file__)))) //调用自定义函数
  17. {
  18. $dir_wriable='建立文件成功';
  19. }
  20. else
  21. {
  22. $dir_wriable='建立文件失败';
  23. }

如果php不能在指定的 dir 参数中创建文件,则退回到系统默认值。

注释:本函数的行为在 4.0.3 版中改变了。也会建立一个临时文件以避免竞争情形,即有可能会在产生出作为文件名的字符串与脚本真正建立该文件之间会在文件系统中存在同名文件。注意,如果不再需要该文件则要删除此文件,不会自动删除的。

tmpfile() 函数以读写(w+)模式建立一个具有唯一文件名的临时文件,文件会在关闭后用 fclose()自动被删除,或当脚本结束后。

  1. $temp = tmpfile();
  2. fwrite($temp, "testing, testing.");
  3. //倒回文件的开头
  4. rewind($temp);
  5. //从文件中读取 1k
  6. echo fread($temp,1024);
  7. //删除文件
  8. fclose($temp);