【发布时间】:2019-05-13 09:32:45
【问题描述】:
当我使用迭代器之后如何关闭资源。
例如 - 如果我有这样的生成器方法:
$fileHandler = fopen($filePath, 'r');
while ($line = fgetcsv($fileHandler)) {
yield $line;
}
fclose($fileHandler);
如何确保调用“fclose”。
如果我调用生成器并且我只从 csv 获取前 3 行,while 循环将暂停,如果不调用下一个值,则不会调用“fclose”。
如何确保关闭文件处理程序。
【问题讨论】:
-
你必须检查完成状态吗?
-
例如有时我需要 3 行。但 csv 可能包含更多。我想知道当我不再需要生成器时是否可以关闭迭代器。否则,如果我只得到 3 行资源可能会导致内存泄漏。
-
使用try-finally:php.net/manual/en/language.generators.overview.php
标签: javascript php