3

かなり大きなデータインポートスクリプト(Symfony "Commands")があり、Monologのメモリ不足が原因でエラーが発生しています(58行目のvendor \ monolog \ src \ Monolog \ Formatter \ LineFormatter.php)。一般的にMonologを使用しているため、完全に無効にしたくありません。

4

2 に答える 2

4

これは古い質問だと思いますが、メモリから生成される長時間実行のMonologを使用するスクリプトで問題が発生したとき、問題はMonologの「fingers_crossed」ハンドラーが大量のログメッセージをバッファリングすることであることがわかりました。

問題のMonologハンドラーの「buffer_size」変数を設定することで問題を解決しました。このようなもの:

main:
    type:         fingers_crossed
    action_level: info
    buffer_size:  200
    handler:      nested

編集:コメントでSergioが指摘しているように、次buffer_sizeのように設定します。

于 2013-02-20T15:50:59.573 に答える
1

製品環境ではDoctrineに問題があるので、ロガーに焦点を合わせても状況が改善されるとは思いません。ただし、への複数の呼び出しを使用して、ログハンドラーをスタックからポップすることを試みることができます$logger->popHandler()。ログメッセージがスタックされているため、メモリが不足している可能性があります。

しかし、教義に問題がある可能性が高いです。

XHProfまたはXDebugを使用して、実際の問題がどこにあるかを確認してみます。スクリプトが一時的に失敗したからといって、それが問題の原因であるとは限りません(実際のメモリリークは別の場所にある可能性があります)。

于 2012-05-25T21:55:37.607 に答える