php yield
參考資料:https://www.cnblogs.com/zuochuang/p/8176868.html
yield即迭代器,我的理解就是當你需要進行一些迴圈性質的非常吃記憶體的操作時,可以使用它。
比如讀取一個非常大的檔案,先要一次性把所有內容放進記憶體中。一般我們的操作是這樣的。
$handle = fopen("/Users/artist/Downloads/11121487.txt", 'rb');
while (feof($handle)===false) {
$value = fgets($handle);
//一系列操作
}
fclose($handle);
當檔案過大你可以加上一句ini_set('memory_limit', '-1');
代表記憶體使用量不受限制,但是萬一檔案很大,伺服器可能就當機了。當使用迭代器yield就完美解決這一問題。
function readTxt()
{
$handle = fopen("/Users/artist/Downloads/11121487.txt", 'rb');
while (feof($handle)===false) {
yield fgets($handle);
}
fclose($handle);
}
foreach (readTxt() as $key => $value) {
//一系列操作
}
至於yield原理什麼的,歡迎去https://www.cnblogs.com/zuochuang/p/8176868.html檢視。
相關文章
- php-yield生成器PHP
- PHP yield 高階用法——網路PHP
- 在 PHP 中使用 Promise + co/yield 協程PHPPromise
- PHP中static與yield關鍵字的思考PHP
- PHP yield from 生成器用法探究 (二)PHP
- PHP yield 協程 生成器用法探究 (一)PHP
- php生成器函式與yield關鍵字PHP函式
- PHP效能優化:生成器 yield的初體驗PHP優化
- [Javascript] yield*JavaScript
- 簡單瞭解一下php的迭代生成器yieldPHP
- php5.5新增的yield關鍵字功能與相關使用技巧PHP
- 用PHP的生成器yield處理大量資料,確實很快!PHP
- 神奇的yield
- python yield和yield from用法總結 木槿惜年2013Python
- yield全面總結
- generator yield-delegation
- 【-Flutter/Dart 語法補遺-】 sync* 和 async* 、yield 和yield* 、async 和 awaitFlutterDartAI
- scala中yield關鍵字
- scrapy yield request失效問題
- yield偽併發練習
- 生成器yield,next()與send()
- java yield()和sleep()的區別Java
- 深入理解python中的yieldPython
- 稀裡糊塗系列之yield前瞻
- yield實現非同步 demo_code非同步
- Python教程:return和yield的區別Python
- 迭代器切片/itertools.islice/yield返回
- 協程與yield個人淺解
- pytest(7)-yield與終結函式函式
- lambda+yield+生成器+迭代器
- 關於C# yield 你會使用嗎?C#
- 非同步程式設計之使用yield from非同步程式設計
- 深入理解Python的yield from語法Python
- yield from 關鍵字的 return 語句
- 【python】非同步IO | 協程 | asyncio | await | yieldPython非同步AI
- c# yield關鍵字原理詳解C#
- Python學習筆記|Python之yield理解Python筆記
- 執行緒篇2:[- sleep、wait、notify、join、yield -]執行緒AI