私は恐ろしいエラーメッセージに遭遇しました。恐らく骨の折れる努力で、PHPはメモリを使い果たしました:
123行目のfile.phpで####バイトの許容メモリサイズを使い果たしました(####バイトを割り当てようとしました)
制限を増やす
あなたが何をしているかを知っていて、制限を増やしたい場合は、memory_limitを見てください:
ini_set('memory_limit', '16M');
ini_set('memory_limit', -1); // no limit
注意してください!あなたは症状ではなく問題を解決しているだけかもしれません!
リークの診断:
エラーメッセージは、メモリがリークしている、または不必要に蓄積されていると私が思うループのある行を指しています。memory_get_usage()
各反復の最後にステートメントを出力しましたが、制限に達するまで数が徐々に増加しているのがわかります。
foreach ($users as $user) {
$task = new Task;
$task->run($user);
unset($task); // Free the variable in an attempt to recover memory
print memory_get_usage(true); // increases over time
}
この質問の目的のための最悪のスパゲッティコード想像がグローバルスコープのどこかに隠れていると仮定してみましょう$user
かTask
。
問題を見つけて修正するのに役立つツール、PHPのトリック、またはブードゥーのデバッグは何ですか?