【问题标题】:should I close a file in PHP's __destruct() method?我应该在 PHP 的 __destruct() 方法中关闭一个文件吗?
【发布时间】:2015-06-28 22:28:09
【问题描述】:

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

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

而且我还在类析构函数中添加了关闭文件方法

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

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

【问题讨论】:

  • 不再需要文件时立即关闭它。
  • 当我们到达读取和存储所有行的点时,脚本将关闭文件。
  • 那么到底有什么问题呢?好像你试图关闭处理程序两次,为什么?
  • 如果有效,请选择我的答案作为答案

标签: php destructor file-handling fclose


【解决方案1】:

当不再需要写入或出现异常时,我更喜欢关闭文件:

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

这对于紧急情况或未捕获的问题很好,因为 PHP 会在删除对象后关闭文件。如果没有,PHP 解释器将释放所有资源,并在 Files 中释放内存地址,并且不会进行任何挂起的写入。

【讨论】:

  • 那么在析构函数中关闭文件并没有真正增加任何价值,对吧?
  • 如果你在 try/catch 中控制文件操作。否则它会阻止文件写入问题。
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 2011-03-15
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
  • 2022-12-22
  • 1970-01-01
  • 2011-08-07
相关资源
最近更新 更多