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
私の問題を説明および/または解決するためのアイデアはありますか?
どうもありがとう...