一分钟了解php中yield的用法(分享)

一分钟了解php中yield的用法(分享),第1张

概述一分钟了解php中yield的用法分享

PHP中yIEld的用法,我相信大部分人依旧是不会用,甚至是不知道什么是yIEld,那么本篇文章就是来告诉大家有关于yIEld的一些问题以及如何用yIEld去解决我们在PHP中遇到的问题。

yIEld 解决的问题

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

Fatal error: Allowed memory size of xxxxxx bytes

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

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

初识YIEld

运行:

<?PHPfunction 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行
<?PHPfunction 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 读取文件,则是一行一行的读取


推荐学习:《PHP视频教程》 总结

以上是编程之家为你收集整理的一分钟了解php中yield的用法(分享)全部内容,希望文章能够帮你解决一分钟了解php中yield的用法(分享)所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/997330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存