php 迭代

什么是迭代?
类继承PHP的Iterator接口,批量操作。
//迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。
//相比传统的编程模式,迭代器模式可以隐藏遍历元素的所需操作。

迭代有什么作用?
处理大数据的时候迭代器很有作用
例子:
如果程序在执行的时候需要读取一个文件的内容,传统的方法是将文件file_get_content 或是 fgets,但是这种有一个缺陷,读出来的数据是直接载入到了php运行内存中,而php运行内存一般设置的是128M,当被读文件的大小很大时(如2G),就会产生报错,解决办法办法是增大php的运行内存,使之能包含住文件大小,但是这样产生的问题是对服务器的性能消耗很大,这时候迭代的作用就凸显出来了,因为迭代并不将读取出来的数据放置进内存,但可以通过foreach 循环来获得数据内容

<?php
	function readYieldFile($fileName){
	    $handle=fopen($fileName,'r');
	    while(!feof($handle)){
	        yield fgets($handle);
	    }
	    fclose($handle);
	}
	
	function formatBytes($bytes)
	{
	    if ($bytes < 1024) {
	        return $bytes . 'b';
	    } elseif ($bytes) {
	        return round($bytes / 1024, 2) . 'kb';
	    }
	    return round($bytes / 1048576, 2) . 'mb';
	}

	$lines = readYieldFile('./test.txt');
	
	var_dump($lines);
	
	foreach ($lines as $row) {
	    echo $row,'<br/>';
	}
	echo formatBytes(memory_get_peak_usage());
?>

学会使用迭代,方便用php处理大数据,当数据量很大,采用迭代可以减小服务器的性能开销,节约成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值