我有一个实现laravel命令的laravel 4 Web项目。
在开发Homestead vm中运行时,它将运行完成(总时间约40秒)。
但是,在生产服务器上运行它时,它会在命令行中以“killed”输出退出。
起初,我认为它是cli php.ini中的max_execution_time,因此我将其设置为0(无限制时间)。
我如何找出正在杀死我的命令的内容?
我使用标准手工艺在ssh终端上运行它:
php artisan commandarea:命令名
laravel 4在某处有命令时间限制吗?
vps是一台Ubuntu 4.10机器,带有mysql,nginx和php-fpm
最佳答案
因此,首先,感谢所有为我指出有关PHP和laravel内存使用情况跟踪的正确方向的人。
我已经回答了我自己的问题,希望它会在将来使laravel开发人员受益,因为我的解决方案很难找到。
键入“dmesg”以显示系统消息后。我发现php脚本已被Linux杀死。
因此,在脚本的每个关键区域之前和之后,我在脚本中添加了内存日志记录调用:
Log::Info('Memory now at: ' . memory_get_peak_usage());
然后,我在观察日志输出以及“top”命令的输出的同时运行了脚本。
我发现即使我的方法结束并且变量超出范围,内存也没有被释放。
我尝试过的事情,即 DIDNT 对我的情况有任何不同:
我完成变量后的
现在,奇怪的是,以上这些都没有任何区别。我的脚本被杀死时仍在使用150mb或ram!
实际起作用的解决方案:
现在,这绝对是特定于laravel的解决方案。
但是我的脚本的目的基本上是解析大型xml提要,然后使用Elequent ORM将数千行插入到mysql中。
事实证明,Laravel创建了日志记录信息和对象,以帮助您查看查询性能。
通过以下“魔术”调用将其关闭,我的脚本从150mb降到了20mb左右!
这就是“魔术”;称呼:
DB::connection()->disableQueryLog();
我可以在发现这个电话的时候告诉你,我正在抓稻草;-(
关于php - 我长期运行的laravel 4命令不断被杀死,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27950102/