php – 我长期运行的laravel 4命令一直被杀死

前端之家收集整理的这篇文章主要介绍了php – 我长期运行的laravel 4命令一直被杀死前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个实现laravel命令的laravel 4 web项目.

当在开发宅基地vm中运行时,它运行完成(总时间约为40秒).

但是,在生产服务器上运行它时,它会在命令行上以“已终止”输出退出.

起初我以为它是cli PHP.ini中的max_execution_time,所以我把它设置为0(无限时间).

我怎样才能找出杀死我命令的内容

我使用标准的artisan invokation在ssh终端上运行它:

PHP artisan commandarea:commandname

laravel 4在某处有命令时限吗?

vps是一个带有mysql,NginxPHP-fpm的Ubuntu 4.10机器

所以,首先,谢谢大家指出我关于 PHP和laravel内存使用情况跟踪的正确方向.

我已经回答了我自己的问题,希望将来有利于laravel开发者,因为我的解决方案很难找到.

输入’dmesg’后显示系统消息.我发现PHP脚本被Linux杀死了.

因此,我在脚本的每个关键区域之前和之后将内存日志记录调用添加到我的脚本中:

Log::Info('Memory now at: ' . memory_get_peak_usage());

然后我在观察日志输出的同时运行脚本以及’top’命令的输出.

我发现即使我的方法结束并且变量超出范围,内存也没有被释放.

我试过的东西,DIDNT在我的情况下有所不同:

>在我完成它们之后对变量进行unset($varname) – 希望让GC开始
>在脚本开头添加gc_enable(),然后在未设置大量变量后添加gc_collect_cycle()调用.
>禁用MysqL事务 – 认为可能是内存密集型 – 它不是.

现在,奇怪的是,以上都没有任何区别.我的剧本在杀死时仍然使用150mb或ram!

实际工作的解决方案:

现在这绝对是一个特定的解决方案.
但我的脚本目的基本上是解析一个大的xml Feed,然后使用Elequent ORM将数千行插入到MysqL中.

事实证明,Laravel创建了日志信息和对象,以帮助您查看查询性能.

通过以下“魔术”调用将其关闭,我将脚本从150mb降低到大约20mb!

这就是’魔术;’呼叫:

DB::connection()->disableQueryLog();

当我发现这个电话时,我可以告诉你,我正在抓稻草;-(

猜你在找的Laravel相关文章