之前有听过php 中自身也有协程,查看找了下并学习。

demo已上传 我的github笔记

yield 解决的问题

解决运行内存的瓶颈,php程序中的变量存储在内存中,之前有遇到过读取Excel文件时候,会出现内存不足,出现:

Fatal Error: Allowed memory size of xxxxxx bytes

所以会设置php 最大运行内存的设置: ini_set('memory_limit', '200M')

但是当我们读取5g 这么大的文件的时候,我们运行内存可能就吃不消了,所以会选择yield

初识Yield

运行:

<?php
function createRange($number){$data = [];for($i=0;$i<$number;$i++){$data[] = time();}return $data;
}
$data =createRange(10);
foreach($data as $value){sleep(1);//这里停顿1秒,我们后续有用echo $value.PHP_EOL;
}

时间是一样的。如果采用yield:

<?phpfunction createRange($number){for($i=0;$i<$number;$i++){yield time();}
}
$data =createRange(10);
foreach($data as $value){sleep(1);//这里停顿1秒,我们后续有用echo $value.PHP_EOL;
}


时间则间隔一秒钟,所以通过yield 的例子知道,不是像第一个例子中把for 循环的内容储存在内存中,而是一个一个消耗。

读取文件的例子

创建一个txt 文件写入:

第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
<?php
function readTxt()
{# code...$handle = fopen("./test.txt", 'rb');while (feof($handle)===false) {# code...yield fgets($handle);}fclose($handle);
}foreach (readTxt() as $key => $value) {# code...sleep(1);echo $value;
}

用php 读取文件,则是一行一行的读取

到这边,大概知道了yield 的作用了,之后咱再深入

参考文章

大文件导入导出优化

php中yield的用法相关推荐

  1. Python中yield简单用法

    Python中yield简单用法 你或许知道带有yield的函数在Python中被称之为generator,那何为 generator? 我们暂时抛开generator,先从一个常见编程题目开始,循序 ...

  2. C#中yield return用法分析

    转载地址:https://www.jb51.net/article/54810.htm 这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield ret ...

  3. python中yield的用法(生成器的讲解)

    2 理解说明yield与生成器 在Python中,使用yield的函数被称为生成器函数(generator function). 生成器有两种方法:next()和send(),都可以调用生成器 yie ...

  4. python中yield的用法

    在 Python 开发中,yield 关键字的使用其实较为频繁,例如大集合的生成,简化代码结构.协程与并发都会用到它. 生成器 如果在一个方法内,包含了 yield 关键字,那么这个函数就是一个「生成 ...

  5. python yield 简单用法_python中 yield 的用法 (简单、清晰)

    首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...

  6. python中yield的用法详解——最简单,最清晰的解释(转载)

    首先,如果你还没有对yield有个初步分认识,那么你先把yield看做"return",这个是直观的,它首先是个return,普通的return是什么意思,就是在程序中返回某个值, ...

  7. python中 yield 的用法详解——最简单,最清晰的解释(排序节省内存消耗)

    首先我要吐槽一下,看程序的过程中遇见了yield这个关键字,然后百度的时候,发现没有一个能简单的让我懂的,讲起来真TM的都是头头是道,什么参数,什么传递的,还口口声声说自己的教程是最简单的,最浅显易懂 ...

  8. python yield from_python中yield的用法以及和yield from的区别

    看了大佬的博客很快就懂了. 由于最近接触了酷q机器人,搭建好了环境,配合NoneBot可以通过python代码自己写机器人功能. NoneBot是基于asyncio的,所以先通过yield来学习一点p ...

  9. python中yield的使用_python中yield的用法详解-转载

    原文链接:https://blog.csdn.net/mieleizhi0522/article/details/82142856 ,今天在写python爬虫的时候,循环的时候用到了yield,于是搜 ...

  10. Python中yield的用法详解——最简单,最清晰的解释

    yield关键字的使用 当函数中遇到yield关键字,类似于return代码会直接返回 当函数中使用yield关键字返回,那么在多此next中,从第二次开始,代码会从上一次结束的位置开始运行 首先,如 ...

最新文章

  1. 批量修改文件权限 和所有者 chown nobody:nobody * -R chmod 775 * -R
  2. X86中的RDTSC指令
  3. android r类 作用,Android 主项目和 Module 中 R 类的区别
  4. 自定义手势解锁锁控件
  5. 系统架构设计师考试4
  6. 三角形和矩形傅里叶变换_信号与系统:第三章傅立叶变换2.ppt
  7. html实现图片加载动画效果,HTML5+javascript实现图片加载进度动画效果
  8. 60-330-000-使用-窗口TopN分析与实现
  9. 实验五:编写、调试具有多个段的程序
  10. python下载网页歌词_利用Python网络爬虫抓取网易云音乐歌词
  11. 用goquery从国家统计局拉取最新省市区3级行政区划代码,生成SQL文件导入数据库
  12. 支付行业架构流程梳理
  13. gom及gee小白架设黑屏的原因以及个别装备地图不显示怎么办?
  14. LeetCode通关:哈希表六连,这个还真有点简单
  15. PHP开发小技巧①⑥—提取富文本字符串中的文本内容
  16. STM32基于HAL库自由启动和关闭定时器:
  17. kindle3折腾之修砖、修复“wifi unavailable”等总结
  18. Canvas颜色渐变效果
  19. 打开手机linux桌面,linux桌面
  20. LINUX 红帽8.2安装pycharm

热门文章

  1. Python Selenium.WebDriver 对Cookies的处理及应用『模拟登录』
  2. [RFID]射频卡介绍(二)IC-Mifare(M1)
  3. CSS动画中的贝塞尔曲线
  4. Linux使用cp强制覆盖
  5. 教我网页设计中的“切图”
  6. 一个普通男人眼中的不错的男人
  7. 苹果手机群控免越狱手机投屏
  8. Android 朋友圈九宫格展示图片
  9. 七夕送女朋友什么礼物?七夕好用、实用好物推荐
  10. 不懂算法,进大厂,真香!