假设我做fopen('filename.ext', 'w');
,但我没有存储句柄。接下来我需要删除该文件。有没有办法找到这个文件附加了一个句柄,然后关闭那个未命名的句柄?
答案 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系统上,您还可以在持有句柄时删除文件(名称)。