加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

一分钟认识php中yield的用法

发布时间:2022-07-16 14:55:46 所属栏目:PHP教程 来源:互联网
导读:php中yield的用法,我相信大部分人依旧是不会用,甚至是不知道什么是yield,那么本篇文章就是来告诉大家有关于yield的一些问题以及如何用yield去解决我们在Php中遇到的问题。 yield 解决的问题 解决运行内存的瓶颈,php程序中的变量存储在内存中,之前有遇到
  php中yield的用法,我相信大部分人依旧是不会用,甚至是不知道什么是yield,那么本篇文章就是来告诉大家有关于yield的一些问题以及如何用yield去解决我们在Php中遇到的问题。
 
  yield 解决的问题
  解决运行内存的瓶颈,php程序中的变量存储在内存中,之前有遇到过读取Excel文件时候,会出现内存不足,出现:
 
  但是当我们读取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行
 
 
  <?phpfunction readTxt(){
 
      # code...
 
      $handle = fopen("./test.txt", 'rb');
 
   
 
      while (feof($handle)===false) {
 
          # code...
 
 
      sleep(1);
 
      echo $value;}
 
  用php 读取文件,则是一行一行的读取

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读