javascript - 如何在生成器函数中关闭 php 资源

标签 javascript php

当我使用迭代器之后如何关闭资源。

例如 - 如果我有这样的生成器方法:

$fileHandler = fopen($filePath, 'r');

while ($line = fgetcsv($fileHandler)) {
    yield $line;
}

fclose($fileHandler);

如何确保调用“fclose”。

如果我调用生成器并且只从 csv 中获取前 3 行,则 while 循环将暂停,如果不调用下一个值,则不会调用“fclose”。

如何确保文件处理程序将被关闭。

最佳答案

将它放在 trycatchfinally block 中。 Finally 总是会被执行。

$fileHandler = fopen($filePath, 'r');
try {    
    while ($line = fgetcsv($fileHandler)) {
        yield $line;
    }
} catch(Exception $e) {
   //Do something with error.
} finally {
   fclose($fileHandler); 
}

关于javascript - 如何在生成器函数中关闭 php 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56109523/

相关文章:

javascript - 使用 XMLSerializer 时 Firefox 中的安全错误

php - 根据可用字体更改字体大小

php - Symfony 4 一些用户无法登录,csrf token 无效,可能是 php session 问题,没有产生错误

javascript - 如何垂直对齐 div 中的链接和按钮?

javascript - 使用 Kendo 可观察数组、模板和数据绑定(bind)

php - 如何用javascript删除引号之间的字符串内容?

php - 在 Symfony2 中使用动态放置的 HTML 渲染 Twig 模板?

PHP:将文本链接转换为 anchor 标记

php - 如何在 Javascript 中使用 PHP 的变音符号

javascript - JQuery .append 列表项在单击时不触发脚本