1

运行我的 PHP CLI 脚本时,我的操作系统内存不足,而 memory_get_usage() 返回 40MB 内存使用。

这是此脚本执行的示例。

<?php
$aInstances = array();
$aInstances = myClass::getInstances(); // returns ~ 1500 objects in array()

while ( count($aInstances) ) {

  $instance = array_pop($aInstances);

  // do some stuff - memory usage increases
  $instance->loadFromDb();
  ......

  // free memory
  unset($instance);
  gc_collect_cycles(); // force garbage collector cleanup (memory usage grows up to 110MB otherwise)
}

// Display Php Memory Usage
echo number_format(memory_get_usage());
// returns 40,320,200
echo number_format(memory_get_peak_usage());
// returns 41,002,056

// Display Php System Memory Usage
echo memory_get_usage(true);
// returns 41,943,040
echo memory_get_peak_usage(true)
// returns 41,943,040
?>

这个脚本似乎完成了他的工作,但是当我尝试通过另一种方式(比如ps aux在另一个 shell 上)查看系统内存使用情况时,内存使用情况超过 90%

脚本有一次被系统杀死,因为它内存不足。

更多信息:

  • 操作系统:Debian 6、2GB 内存
  • PHP版本:5.3.3-7
  • php.ini (cli) memory_limit = 128M

你有什么想法来解释和/或解决我的问题吗?

非常感谢...

4

0 回答 0