我們有一些相當大的數據導入腳本(Symfony「Commands」),由於Monolog的內存不足(vendor 58)的供應商\ monolog \ src \ Monolog \ Formatter \ LineFormatter.php而導致錯誤。我們一般使用Monolog,所以不想完全禁用它。一種在每個腳本的基礎上禁用Monolog的方法?
回答
我意識到這是一個老問題,但是當我遇到長時間運行,使用Monolog的腳本產生內存錯誤時,問題是Monolog的'fingers_crossed'處理程序緩衝了大量的日誌消息。
我通過爲所討論的Monolog處理程序設置'buffer_size'變量解決了這個問題。事情是這樣的:
main:
type: fingers_crossed
action_level: info
buffer_size: 200
handler: nested
編輯:正如在評論中指出的塞爾吉奧,buffer_size
集:「有多少項應該被最多緩衝,超出了最早的項目是從緩存刪除」。
太棒了!遲到總比不到好!謝謝! – Ben
提高你的性能: buffer_size:最多應該緩存多少條目,除此之外,最早的條目將從緩衝區中刪除。 來源:https://github.com/Seldaek/monolog/blob/master/src/Monolog/Handler/BufferHandler.php –
由於在產品環境中您有教義的問題我不認爲專注於記錄器將改善您的情況。但是,您可以嘗試通過多次調用$logger->popHandler()
將日誌處理程序彈出堆棧。可能是由於日誌消息堆疊而導致內存不足。
儘管你很可能有教條的問題。
我想嘗試使用XHProf或XDebug來查看實際問題的位置。僅僅因爲你的腳本在某一點失敗並不意味着它是問題的原因(實際的內存泄漏可能在其他地方)。
- 1. 提供一種在每個目錄基礎上進行配置更改的方法?
- 2. 基礎的PHP腳本
- 3. 在每個文件夾的基礎上設置RubyGems版本
- 4. Octopress在每頁基礎上禁用旁白?
- 5. 可以在Rails 3.2中的每個請求基礎上禁用rack-cache?
- 6. 是否有一種廉價的方法在每幀的基礎上從RenderTarget2D傳輸顏色數據?
- 7. 豬腳本TRANSPOSE(移調)上的一定的標準基礎
- 8. 我可以在每個文件的基礎上白名單RuboCop Rails/DynamicFindBy方法
- 9. Symfony 2:禁用Monolog
- 10. XAML基礎上另一種顏色
- 11. 從另一種方法的java腳本調用方法
- 12. MSVC _penter和_pexit掛鉤可以在每個函數基礎上禁用嗎?
- 13. 如何在每個用戶的基礎上轉換datetime
- 14. 重寫一個Python腳本,每個腳本的類的注射方法
- 15. 基礎對象沒有方法基礎
- 16. 啓動一個scala腳本的兩種方法,哪個更好?
- 17. 在提取腳本時是否有另一種方法來禁用緩存?
- 18. Clang:在每個函數/每塊代碼基礎上啓用SSE4的正確方法?
- 19. 在Tumblr的每個帖子的基礎上定義風格
- 20. 一個AJAX方法我試圖使用禁用是jQuery的另一種方法
- 21. 最好的方法在哈希基礎上使用Ruby
- 22. Laravel 5.1無法在每週的基礎上獲取數據
- 23. 基礎上的另一個變量
- 24. 獲取基礎上的一個
- 25. 每個文字基礎
- 26. 如何在每個目錄的基礎上設置JSHint選項
- 27. 在每個命中的基礎上僞造DNS解析
- 28. 在每個工作站的基礎上打開mysql連接
- 29. 如何在每個請求的基礎上配置JAX-RS MessageBodyWriter?
- 30. 在每個項目基礎上忽略Subversion中的文件
您是否在prod環境中運行腳本(--env = prod)?因爲這種方式monolog不應該記錄任何東西,直到達到給定的日誌級別(通常是錯誤)。 –
確實有幫助 - 導入腳本可以通過另外幾千條記錄 - 但它最終會再次出錯。奇怪的是,它在另一個位置出錯(在418行上的vendor \ doctrine \ lib \ Doctrine \ ORM \ UnitOfWork.php)。我之前有過這個錯誤,我通過批處理修復了這個錯誤(http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/batch-processing.html)。我試圖讓我的批量更小,但是完全禁用monolog仍然是唯一可以解決這些錯誤的方法(--env = prod或不)。 – Ben