我应该在 PHP 的 __destruct() 方法中关闭文件吗?
should I close a file in PHP's __destruct() method?
在我的脚本中,我需要一个 CSV 文件的打开流,我的应用程序将根据不同的请求读取单行、多行或所有行,并将它们存储在数组中!
当我们到达读取和存储所有行的时间点时,脚本将关闭文件。
而且我已经将关闭文件方法添加到 class 析构函数中
public function __destruct()
{
fclose($this->handler)
}
我想知道这是否真的有必要?或者考虑到这是我的脚本生命周期的结束,文件处理程序将由 PHP 的垃圾收集器处理并且添加上述 destruct 方法不会添加任何值?
当不再需要写入或发生异常时,我更愿意关闭文件:
try {
//write file
//close file after all reading operations has been done
} catch (Exception $e) {
fclose($this->handler);
}
作为紧急情况或未解决的问题,这很好,因为 PHP 将在删除对象后关闭文件。如果不是,PHP 解释器将释放所有资源,并且在文件中它将释放内存地址并且不会完成任何挂起的写入。
在我的脚本中,我需要一个 CSV 文件的打开流,我的应用程序将根据不同的请求读取单行、多行或所有行,并将它们存储在数组中!
当我们到达读取和存储所有行的时间点时,脚本将关闭文件。
而且我已经将关闭文件方法添加到 class 析构函数中
public function __destruct()
{
fclose($this->handler)
}
我想知道这是否真的有必要?或者考虑到这是我的脚本生命周期的结束,文件处理程序将由 PHP 的垃圾收集器处理并且添加上述 destruct 方法不会添加任何值?
当不再需要写入或发生异常时,我更愿意关闭文件:
try {
//write file
//close file after all reading operations has been done
} catch (Exception $e) {
fclose($this->handler);
}
作为紧急情况或未解决的问题,这很好,因为 PHP 将在删除对象后关闭文件。如果不是,PHP 解释器将释放所有资源,并且在文件中它将释放内存地址并且不会完成任何挂起的写入。