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的用法(分享)所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)