我应该在PHP的__destruct()方法中关闭文件吗?

时间:2015-06-28 14:11:20

标签: php destructor file-handling fclose

在我的脚本中,我需要一个CSV文件的开放流,我的应用程序将根据不同的请求读取其中的一行,多行或全部行,并将它们存储在一个数组中!

当我们达到读取并存储所有行的时间时,脚本将关闭该文件。

但我也将close文件方法添加到类析构函数

public function __destruct()
{
    fclose($this->handler)
}

我想知道这是否真的有必要?或者考虑到这是我的脚本生命周期的结束,文件处理程序将由PHP的垃圾收集器处理并添加上面的destruct方法不会添加任何值?

1 个答案:

答案 0 :(得分:2)

我不想在不再需要写入或异常时关闭文件:

try {
//write file
//close file after all reading operations has been done
} catch (Exception $e) {
 fclose($this->handler);
}

这是一个紧急或无法解决的问题,因为PHP会在删除对象后关闭文件。如果没有,PHP解释器将释放所有资源,并且在文件中它将释放内存地址,并且任何未完成的写入都将无法完成。