[PHP] 业务逻辑大内存占用的优化思路, yield 和 chunk
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | header( "content-type:text/html;charset=utf-8" ); function readTxt() { $handle = fopen ( "./test.txt" , 'rb' ); while ( feof ( $handle )===false) { yield fgets ( $handle ); } fclose( $handle ); } foreach (readTxt() as $key => $value ) { echo $value . '<br />' ; } |
yield 生成器允许你 在 foreach 代码块中写代码来迭代一组数据而不需要在内存中创建一个数组。
每次被加载到内存中的文字只有一行,大大的减小了内存的使用。
另一种方式是数组不叠加,而是重新赋值;分次读取就是类似SQL 中的 limit 分页操作。
Refer:php_yield
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2020-02-25 [Contract] Solidity 遍历 mapping 的一种方式
2020-02-25 [Contract] Solidity 判断 mapping 值的存在
2020-02-25 [Contract] public、external, private、internal 在 Solidity 中如何选择
2019-02-25 [Kafka] |FAIL|rdkafka#producer-1 : Receive failed: Disconnected