当php函数结束时释放内存

时间:2014-03-03 22:10:38

标签: php variables memory-management

我正在编写一些处理大量数据的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会在函数结束时为我执行此操作?

或者:

- 有没有更好的方式放开那段记忆?

- 任何测试这种事情的方法?

- 更好的资源管理的任何提示?

1 个答案:

答案 0 :(得分:0)

PHP不希望你取消设置所有变量。

此处$evenBigger变量具有本地范围,除非您将其分配给代码中的某个外部引用,否则在执行函数后无需处理它。

请注意,我并不确切知道PHP的内部行为,但我无法确定何时会收集垃圾。有关的文件似乎很好http://www.php.net/manual/en/features.gc.php