PHP产量与PDO获取?
昨天,我了解到
PHP有一个yield()方法.我不确定它在PHP中的用处.
一位同事表示,它可以帮助SQL语句返回许多行,从而导致潜在的内存问题.我相信他正在引用fetchAll(). 我错过了关于yield()vs fetch()的内容吗?使用yield()和generator有更多好处吗? P.S.:与使用fetch()相比,使用yield()在大型应用程序中编写干净,可读和可维护的代码更容易.
究竟. 但它可以让你伪装while()/ fetch()序列作为foreach()调用,如果你愿意,也没有内存开销. 但是,PDO并不是一个很好的例子,因为PDOStatement已经实现了一个可遍历的接口,因此can be iterated over using foreach(): $stmt = $pdo->query('SELECT name FROM users'); foreach ($stmt as $row) { var_export($row); } 因此,让我们将mysqli用于只能逐个传输结果的示例API. 让我们创建一个像这样的生成器 function mysqli_gen (mysqli_result $res) { while($row = mysqli_fetch_assoc($res)) { yield $row; } } 现在你可以使用foreach获取行而不需要开销: $res = $mysqli->query("SELECT * FROM users"); foreach (mysqli_gen($res) as $row) { var_export($row); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |