1

PHP CLI スクリプトを実行すると、memory_get_usage() が 40MB のメモリ使用量を返している間、OS がメモリ不足になります。

このスクリプトが実行する内容のサンプルを次に示します。

<?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
?>

このスクリプトは彼の仕事をしているようですが、別の方法で(別のシェルのように)システムのメモリ使用量を確認しようとすると、メモリ使用量は 90% を超えています。ps aux

スクリプトは、メモリ不足のため、システムによって 1 回強制終了されました。

いくつかの詳細情報:

  • OS : Debian 6、メモリ2GB
  • PHP バージョン: 5.3.3-7
  • php.ini (cli) メモリ制限 = 128M

私の問題を説明および/または解決するためのアイデアはありますか?

どうもありがとう...

4

0 に答える 0