美文网首页
PHP中的yield 用途

PHP中的yield 用途

作者: 夜空中乄最亮的星 | 来源:发表于2018-06-08 11:27 被阅读0次

yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 Iterator 接口的方式,性能开销和复杂性大大降低。

生成器函数的核心是yield关键字。它最简单的调用形式看起来像一个return申明,
不同之处在于普通return会返回值并终止函数的执行,而yield会返回一个值给循环调用此生成器的代码并且只是暂停执行生成器函数。

很多不了解的朋友看完可能会表示这有什么用呢?

举个栗子:

比如从数据库取出数亿条数据,这个时候要求用一次请求加响应返回所有值该怎么办呢?获取所有值,然后输出,这样肯定不行,因为会造成PHP内存溢出的,因为数据量太大了。如果这时候用yield就可以将数据分段获取,理论上这样是可以取出无限的数据的。

一般的获取方式 :
数据库连接.....
$sql = "select * from `user` limit 0,500000000";
$stat = $pdo->query($sql);
$data = $stat->fetchAll();  //mysql buffered query遍历巨大的查询结果导致的内存溢出

var_dump($data);
yield获取方式:
数据库连接.....
function get(){
    $sql = "select * from `user` limit 0,500000000";
    $stat = $pdo->query($sql);
    while ($row = $stat->fetch()) {
        yield $row;
    }
}

foreach (get() as $row) {
    var_dump($row);
}

看到上面的示例,我相信聪明如我的您,已经完全明白了吧,哈哈~!

相关文章

  • PHP中的yield 用途

    yield生成器是php5.5之后出现的,yield提供了一种更容易的方法来实现简单的迭代对象,相比较定义类实现 ...

  • zan框架入门(一)——协程

    zan 是基于PHP协程的网络服务框架,要使用zan框架,首先需要了解php的yield。建议先看一下 在PHP中...

  • php yield

  • Blade 模板引擎子视图

    include extends yield section1 home.blade.php 2 layouts.b...

  • PHP生成器和yield

    简介 生成器和yield结合可以实现php的协程 前置知识 如果对生成器和yield不了解,可以先看看下面两个博客...

  • php yield 程序优化

    yield 直接使用demo进行解释 function 1 function 2 调用函数 结果 解释方法2的执行...

  • pytest-fixture中的yield及autouse

    记录一下fixture中关于yield以及autouse参数的两个小细节。 yield yield在fixture...

  • PHP 生成器

    在学习python时,发现有个yield(生成器)的概念,就特别留意了下。看书时发现PHP在5.5中已经增加了生成...

  • 图像处理

    php扩展库:C:\wamp\bin\php\php5.3.10\ext 1、图像应用2、基本概念MIME:多用途...

  • Python yield关键字

    Python中yield关键字解释 这篇文章关于python的yield关键字。并且文章中会解释什么是yield,...

网友评论

      本文标题:PHP中的yield 用途

      本文链接:https://www.haomeiwen.com/subject/xvmosftx.html