首页 » SEO优化 » php年夜号字体技巧_PHP 生成器 yield 机能优化利器

php年夜号字体技巧_PHP 生成器 yield 机能优化利器

访客 2024-11-26 0

扫一扫用手机浏览

文章目录 [+]

当一个天生器被调用的时候,它返回一个可以被遍历的工具.当你遍历这个工具的时候(例如通过一个foreach循环),PHP 将会在每次须要值的时候调用工具的遍历方法,并在产生一个值之后保存天生器的状态,这样它就可以在须要产生下一个值的时候规复调用状态。

一旦不再须要产生更多的值,天生器可以大略退出,而调用天生器的代码还可以连续实行,就像一个数组已经被遍历完了

php年夜号字体技巧_PHP 生成器 yield 机能优化利器

看了官方的阐明,还是看不懂,举个例子。

php年夜号字体技巧_PHP 生成器 yield 机能优化利器
(图片来自网络侵删)

读取超大文件

PHP开拓很多时候都要读取大文件,比如csv文件、text文件,或者一些日志文件。
这些文件如果很大,比如5个G。
这时,直接一次性把所有的内容读取到内存中计算不太现实。

这里天生器就可以派上用场啦。
大略看个例子:读取text文件。
我们创建一个text文本文档,并在个中输入几行笔墨,示范读取。

<?phpheader("content-type:text/html;charset=utf-8");function readTxt(){ # code... $handle = fopen("./test.txt", 'rb'); while (feof($handle)===false) { # code... yield fgets($handle); } fclose($handle);}foreach (readTxt() as $key => $value) { # code... echo $value.'<br />';}

利用天生器读取文件,第一次读取了第一行,第二次读取了第二行,以此类推,每次被加载到内存中的笔墨只有一行,大大的减小了内存的利用。

这样,纵然读取上G的文本也不用担心,完备可以像读取很小文件一样编写代码。

百万级别的访问量

yield天生器是php5.5之后涌现的,yield供应了一种更随意马虎的方法来实现大略的迭代工具,比较较定义类实现 Iterator 接口的办法,性能开销和繁芜性大大降落。

yield天生器许可你 在 foreach 代码块中写代码来迭代一组数据而不须要在内存中创建一个数组。

标签:

相关文章