我正在将文件上传到我的 Yii2 项目。文件本身约为 100kB,包含约 45 000 行短行,这些行由控制器处理并逐行添加到数据库中。
我怎样才能准确地追踪错误发生的时间或者是什么消耗了内存?php.ini 中设置的限制当前为 512MB。LogTarget 与它有什么关系呢?据我所知,我在此上传和更新过程中没有记录任何内容。
当其他东西正在使用服务器内存时,这种事情会发生吗?还有其他背景脚本吗?
错误不在这一行。当我从 Excel 文件导入数据并使用 print_r 或 var_dump 记录一些“模型”数据时,我遇到了同样的错误,其中整个“模型”被添加到日志中(包括关系遍历等)
您可以通过使用 Vardumper 而不是 print_r 或 var_dump 限制转储的深度并设置深度(例如 3)来解决此问题
yii\helpers\VarDumper::dumpAsString($var, $depth, $highlight)
Run Code Online (Sandbox Code Playgroud)
然后只有代码返回到这个深度,并且日志会变得更小。
此外,如果您对数据库进行多次插入/更新,日志将会变得相当长。
顺便说一句,问题来自调试工具栏。如果禁用调试模块,则不会收到错误消息。
但除了增加内存之外没有真正的解决方案