我正在编写一些处理大量数据的PHP脚本,但是在函数内一次处理大量数据。有点像这样:
function part1(){
$data = getLargeArray();
$evenBigger = array();
foreach($data as $piece){
$evenBigger[$piece['part1']][$piece['part2']][] = ohGodMoreData();
}
//...manipulate $evenBigger more and more
return true;
}
part1();
part2();
//...etc
我担心我的功能的内存使用情况。并不是说它们非常繁琐,但我担心如果没有释放内存,它可能就是这样。我知道php会在每个脚本的末尾释放所有内存,但我也不想运行4或5个不同的脚本。
当我转到part2();
时,内存是否从part1();
中解脱出来?
我应该手动取消设置占用空间的变量,例如$data
和$evenBigger
,还是相信php会在函数结束时为我执行此操作?
或者:
- 有没有更好的方式放开那段记忆?
- 任何测试这种事情的方法?
- 更好的资源管理的任何提示?
答案 0 :(得分:0)
PHP不希望你取消设置所有变量。
此处$evenBigger
变量具有本地范围,除非您将其分配给代码中的某个外部引用,否则在执行函数后无需处理它。
请注意,我并不确切知道PHP的内部行为,但我无法确定何时会收集垃圾。有关的文件似乎很好http://www.php.net/manual/en/features.gc.php