是否可以检查是否存在与文件关联的句柄,以防我之前没有将其保存为变量?

时间:2012-10-28 20:58:28

标签: php file handle

假设我做fopen('filename.ext', 'w');,但我没有存储句柄。接下来我需要删除该文件。有没有办法找到这个文件附加了一个句柄,然后关闭那个未命名的句柄?

2 个答案:

答案 0 :(得分:1)

来自文档:

  

感谢PHP 4的Zend Engine引入的引用计数系统,这是一种资源   没有更多的引用被自动检测到,它被垃圾释放   集电极。因此,很少需要手动释放内存。

答案 1 :(得分:0)

在Linux上,您可以list /proc/self/fd/获取句柄和相应的文件名,但是没有与平台无关的php函数。

而不是疯狂地关闭句柄,你应该将fopen调用包装在try .. finally块(php 5.3 +)中:

$f = fopen('filename.ext', 'w');
if ($f !== false) {
  try {
     // Some code that may throw an exception
  } finally {
     fclose($f);
  }
}

请注意,至少在POSIX系统上,您还可以在持有句柄时删除文件(名称)。