小编给大家分享一下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;
}
时间是一样的。如果采用yield:
<?php
functioncreateRange($number){
for($i=0;$i<$number;$i++){
yieldtime();
}
}
$data=createRange(10);
foreach($dataas$value){
sleep(1);//这里停顿1秒,我们后续有用
echo$value.PHP_EOL;
}
时间则间隔一秒钟,所以通过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是什么语言
php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种 HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。
以上是“php中yield怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!