PHP---变量销毁,释放内存
最近在做一些项目,处理大数据,例如:导入,导出Excel文件,每次都要导入/导出几万个,占用内存高,很多时间导入\导出不成功,主要原因:导入,导出还需要经过大量的数据处理,内存很高,所以需要考虑主动销毁变量,释放内存。
下面仅测试变量销毁,释放内存:
$m0 = memory_get_usage(); echo "原始内存:{$m0}<br>"; $s = str_repeat('1',255); $m1 = memory_get_usage(); echo "加变量后内存:{$m1},变量内存:".($m1-$m0)."B<br>"; unset($s); // 删除变量 $m2 = memory_get_usage(); echo "删除变量后内存:{$m2}<br>";
效果:
原始内存:405208
加变量后内存:405528,变量内存:320B
删除变量后内存:405208
测试:100000条数据
$m0 = memory_get_usage(); echo "原始内存:{$m0}<br>"; $list = []; for($i=0;$i<100000;++$i){ array_push($list,['id'=>$i,'title'=>'张三']); } $m1 = memory_get_usage(); echo "加变量后内存:{$m1},变量内存:".((($m1-$m0) / 1024) / 1024)."M<br>"; unset($list); // 删除变量 $m2 = memory_get_usage(); echo "删除变量后内存:{$m2}<br>";
效果:
原始内存:405928 加变量后内存:44297488,变量内存:41.858253479004M 删除变量后内存:405928
我们可以查看一下自己的PHP程序所允许的最大内存:php.ini
memory_limit = 256M
大数据,通过优化确实能够降低内存。
参考:https://www.cnblogs.com/zhangqie/p/8397400.html
打完收工!