php数组数据量过大时报错的问题

在做一个excel导出的时候,数据量超过2千多条的时候就会报错。刚开始以为是服务器或者数据库崩掉了。但是报错时页面反应速度很快,不像是服务器性能问题。后来经过反复的测试发现是在处理数据的时候使用的如pdo中fetchAll这种的函数,一次性将所有的数据全部装入到一个数组中,导致类似内存溢出的问题。


解决办法:

在对数据进行处理的时候可以逐条取数据,如:


while($data = $pdo->fetch()){
		......
	}

如果必须要将数据整理撑数组的形式再处理,可以在循环中边获取,边处理,边删除,如:

while($data = $pdo->fetch()){
		......
		$arr[data['name']][] = $data;
		.........
		unset($arr);
	}



你可能感兴趣的:(php)