使用 yield 减少内存消耗
php 里面想要处理一个文本文件,有一个方法是使用 file() 函数,但是这个函数会读取文件所有内容,可能会导致占用很大内存。
// 28.1 M 的文本文件, 200w 行 $file = 'storage/logs/runningtime/2019-03-17.log';$file = file($file);// 219.28M dd(round(memory_get_usage() / 1024 / 1024, 2) . 'M');
但是我们可以以另外一种方式处理,使用 fgets 逐行读取,逐行处理。
// 28.1 M 的文本文件, 200w 行 $file = 'storage/logs/runningtime/2019-03-17.log';$fp = fopen($file, 'r'); while (($line = fgets($fp)) !== false) {// do something }// 1.87M dd(round(memory_get_usage() / 1024 / 1024, 2) . 'M');
现在,我们也有另外一种选择,使用 yield 关键字,用法如下:
// 28.1 M 的文本文件, 200w 行 $file = 'storage/logs/runningtime/2019-03-17.log';function generator($file) {$fp = fopen($file, 'r');while (($line = fgets($fp)) !== false) {yield $line;}fclose($fp); }foreach (generator($file) as $line) {// do something }// 1.86M dd(round(memory_get_usage() / 1024 / 1024, 2) . 'M');
转载于:https://www.cnblogs.com/eleven24/p/10549542.html
使用 yield 减少内存消耗相关推荐
- spark减少内存消耗_将内存消耗减少20倍
spark减少内存消耗 这将是另一个故事,与我们分享有关内存相关问题的最新经验. 该案例是从最近的客户支持案例中提取的,在该案例中,我们遇到了一个行为异常严重的应用程序,该应用程序因生产中的OutOf ...
- PHP 实现大数据(30w量级)表格导出(导出excel) 提高效率,减少内存消耗,终极解决方案
使用php做项目开发的同学,一定都会有过使用php进行excel表格导出的经历,当导出少量数据还好,一旦数据量级达到5w. 10w.20w甚至30以上的时候就会面临同样的问题: 1.导出时间变得很慢, ...
- 宝塔linux减少内存消耗,liunx宝塔面板解决rsyslogd内存占用很高的问题
大鸟博客用的vps是瓦工的3核2G,cn2 gia线路的vps方案,按理说这么个小博客2G内存是足够使用了.可以是最近常常发现内存占用一度达到90%.一度怀疑是缓存所致,但是我的menmcached的 ...
- python sizeof_python 变量作用域 v.__sizeof__() python 深复制 一切皆对象 尽量减少内存消耗 赋值语句的原理...
CPython implementation detail: This is the address of the object in memory. copy - Shallow and deep ...
- python内存消耗大吗_如何减少python内存的消耗?
标签: Python 打算删除大量涉及像C和C++语言那样的复杂内存管理.当对象离开范围,就会被自动垃圾收集器回收.然而,对于由Python 开发的大型且长期运行的系统来说,内存管理是不容小觑的事情. ...
- Docker中的Java内存消耗优化以及我们如何使用Spring Boot
---- / BEGIN/ ---- 如果您的Docker容器占用太多内存而无法达到最佳性能,请阅读下文以了解一个团队如何找到解决方案. 最近,我所在的团队在部署我们的微服务(AWS上Docker中的 ...
- idea 启动多个项目 减少内存占用
项目采用 spring boot 和spring cloud 框架,多个模块同时启动时 消耗内存过大,导致电脑崩溃.网上找到减少内存消耗的方法,在此记录一下.参考了https://blog.csdn. ...
- 将内存消耗减少20倍
这将是另一个故事,与我们分享有关内存相关问题的最新经验. 该案例是从最近的客户支持案例中提取的,在该案例中,我们遇到了一个行为异常严重的应用程序,该应用程序因生产中的OutOfMemoryError消 ...
- 实例解读:如何减少Docker中的Java内存消耗
最近,我所在的团队面临着部署微服务(Java+SpringMVC in Docker on AWS)的问题.主要问题是,很多非常轻巧的应用程序消耗了太多的内存.因此,我们经过多方尝试找到了在Docke ...
最新文章
- Sublime搭建Python环境
- 壕!甲骨文创始人 8000 万美元买豪宅后打算拆掉
- 为什么要叫python-为什么要学 Python?
- rxjs里debounceTime operators的用法
- 5分钟内完成胸部CT扫描机器学习
- JavaScript -- arguments、apply 、call、bind
- 整合Servlet到Spring容器
- 【精选】Java高频面试题278道附答案,通关中大型互联网企业工程师必备
- java药品管理系统源代码,基于jsp的药品管理系统-JavaEE实现药品管理系统 - java项目源码...
- 代理IP软件如何只切换浏览器IP地址
- 你对“happen-before原则”的理解可能是错的?
- h5 app跳转客服咨询 临时会话 (没有开通在线咨询、无法会话)
- 计算机桌面图标有双影,win7旗舰版桌面图标出现重影怎么办 win7旗舰版桌面图标没有了如何恢复...
- 【雕爷学编程】Arduino动手做(103)---四路无线遥控套件
- 万能计算机作文,万能通用作文600字
- 判断一个整数是否是2的倍数
- dataTable固定列固定行
- 与计算机相关的哲学家,数:计算机、哲学家及对数的含义的探索
- 如何解决无法显示隐藏文件夹
- android客户端与服务器交互数据(基于SAOP协议的远程调用标准,通过webservice可以将不同操作系统平台,不同语言,不同技术整合)