[英]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'將不會被調用。
如何確保文件處理程序將被關閉。
把它放在try
, catch
, finally
阻止。 最后總是會被執行。
$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.