簡體   English   中英

如何在生成器函數中關閉php資源

[英]how to close php resource in generator functions

當我使用迭代器時如何關閉資源。

例如 - 如果我有這樣的生成器方法:

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

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

fclose($fileHandler);

如何確保調用'fclose'。

如果我調用生成器並且我只從csv獲得前3行,則while循環將暫停,如果不調用下一個值'fclose'將不會被調用。

如何確保文件處理程序將被關閉。

把它放在trycatchfinally阻止。 最后總是會被執行。

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

最好的方法是像這樣處理資源

if(is_resource($fileHandler)) fclose($fileHandler);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM