假设我有fopen('filename.ext', 'w');
,但我没有存储手柄。接下来我需要删除该文件。有没有办法找到这个文件附加了一个句柄,然后关闭那个未命名的句柄?
问问题
52 次
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 回答