3

我们有一些相当大的数据导入脚本(Symfony“命令”)由于 Monolog 内存不足而出错(vendor\monolog\src\Monolog\Formatter\LineFormatter.php 在第 58 行)。我们一般使用 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

由于在 prod 环境中您遇到 Doctrine 问题,我认为专注于记录器不会改善您的情况。但是,您可以尝试通过多次调用将日志处理程序从堆栈中弹出$logger->popHandler()。可能是日志消息被堆叠,因此您的内存不足。

不过,您更有可能对教义有疑问。

我会尝试使用 XHProf 或 XDebug 来查看实际问题在哪里。仅仅因为您的脚本在某一时刻失败并不意味着它就是问题的原因(实际的内存泄漏可能在其他地方)。

于 2012-05-25T21:55:37.607 回答