php中yield怎么用

小编给大家分享一下php中yield怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

yield 解决的问题

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

FatalError:Allowedmemorysizeofxxxxxxbytes

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

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

初识Yield

运行:

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

php中yield怎么用

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

<?php

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

php中yield怎么用

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

读取文件的例子

创建一个txt 文件写入:

第1行
第2行
第3行
第4行
第5行
第6行
第7行
第8行
<?php
functionreadTxt()
{
#code...
$handle=fopen("./test.txt",'rb');

while(feof($handle)===false){
#code...
yieldfgets($handle);
}

fclose($handle);
}

foreach(readTxt()as$key=>$value){
#code...
sleep(1);
echo$value;
}

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

php中yield怎么用

php是什么语言

php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。

以上是“php中yield怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-05-30 14:05:06
收藏
分享
海报
0 条评论
166
上一篇:html中如何设置网页背景 下一篇:html如何让字体加粗
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码