Memory Yii2允许的内存大小已耗尽

Memory Yii2允许的内存大小已耗尽,memory,yii2,Memory,Yii2,我正在将文件上载到我的Yii2项目。该文件本身约100kB,包含约45000行由控制器处理并逐行添加到数据库中的短线 我怎样才能准确地跟踪错误发生的时间或消耗内存的是什么?php.ini中设置的限制当前为512MB。LogTarget和它有什么关系?抱歉,在上传和更新过程中,我没有记录任何东西 当其他东西正在使用服务器的内存时,会发生这种情况吗?其他背景脚本吗?我已经有过这种情况的经验。你可以采取两种方式 1) -提高php.ini中的memory_limit参数 ; Maximum amou

我正在将文件上载到我的Yii2项目。该文件本身约100kB,包含约45000行由控制器处理并逐行添加到数据库中的短线

我怎样才能准确地跟踪错误发生的时间或消耗内存的是什么?php.ini中设置的限制当前为512MB。LogTarget和它有什么关系?抱歉,在上传和更新过程中,我没有记录任何东西


当其他东西正在使用服务器的内存时,会发生这种情况吗?其他背景脚本吗?

我已经有过这种情况的经验。你可以采取两种方式

1) -提高php.ini中的memory_limit参数

; Maximum amount of memory a script may consume (128MB)
; http://php.net/memory-limit
; memory_limit = 128M
memory_limit = 256M

2) -通过将文件拆分为更小的部分,并使用单独的脚本(或单独的帖子)对其进行管理。

错误不在此行中。 当我从excel文件导入数据并使用print_r或var_dump记录一些“模型”数据时,我也遇到了同样的错误,其中整个“模型”被添加到日志中(包括关系遍历等)

您可以通过使用Vardumper(而不是print_r或var_dump)限制转储深度并设置深度(例如3)来解决此问题

然后,只有代码返回到此深度,日志将变小

此外,如果对数据库进行了多次插入/更新,日志将变得相当长

顺便说一句,问题来自调试工具栏。如果禁用调试模块,则不会出现错误


但是除了增加内存之外,没有真正的解决方案

肯定是您的脚本使用了500 MB的内存。这可能与那条特定的线路无关。您可能需要调试正在解析上载文件的脚本,并找到内存泄漏。向我们显示您的控制器代码这是正确的。我禁用了调试工具栏,现在我不再面临这个问题。它实际上与Yii没有多大关系,脚本因其性质而变得复杂,但禁用工具栏会将内存使用量从~370MB降至~40MB,这是巨大的!谢谢你的提示!
yii\helpers\VarDumper::dumpAsString($var, $depth, $highlight)