0

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

4

2 回答 2

1

从文档:

感谢 PHP 4 的 Zend 引擎引入的引用计数系统,自动检测到不再引用它的资源,并被垃圾收集器释放。因此,很少需要手动释放内存。

于 2012-10-28T21:02:37.967 回答
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 系统上,您还可以在持有文件(名称)的句柄时删除文件(名称)。

于 2012-10-28T21:04:36.277 回答