我有一个实现laravel命令的laravel 4 web项目。

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

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

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

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

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

php artisan commandarea:commandname

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

vps是一个带有mysql,nginx和php-fpm的Ubuntu 4.10机器

#1楼 票数:7 已采纳

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

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

输入'dmesg'后显示系统消息。 我发现php脚本被Linux杀死了。

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

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

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

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

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

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

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

实际工作的解决方案:

现在这绝对是一个特定的解决方案。 但我的脚本目的主要是解析一个大的xml feed,然后使用Elequent ORM将数千行插入到mysql中。

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

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

这就是'魔术'; 呼叫:

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

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

#2楼 票数:3

一个进程可能会被杀死有几个原因:

记不清

有两种方法可以触发此错误:超过在php.ini中分配给PHP脚本的内存量,或超过可用的系统内存。 检查PHP错误日志和php.ini文件以排除第一种可能性,并使用dmesg输出检查第二种可能性。

超出执行超时限制

在您的帖子中,您指示您通过max_execution_time设置禁用了超时,但我已将其包含在此处以保证完整性。 确保php.ini中的设置正确并且(对于那些使用Web服务器而不是CLI脚本的设置)重新启动Web服务器以确保新配置处于活动状态。

堆栈中的错误

如果您的脚本没有错误且没有遇到上述任何一种错误,请确保您的系统按预期运行。 使用Web服务器时,请重新启动Web服务器软件。 检查错误日志以查找意外输出,并停止或升级相关的守护程序并且需要。

#3楼 票数:1

在Laravel / Spark项目中遇到过这个问题。 只是想分享其他人是否有这个问题。

如果在更积极的方法之前运行Vagrant或Ubuntu,请尝试刷新/重新启动您的开发服务器。

我不小心在Vagrant服务器上运行了依赖包的安装。 我还在安装错误期间反复删除并替换了镜像文件夹。 我的错误发生在Laravel / Spark 4.~上。 我能够在其他项目上运行迁移; 在几乎所有命令的特定项目中,我很快就被“杀死”了300毫秒的时间框架。 阅读其他用户,我害怕试图找到问题或腐败。 在我的情况下,快速的Vagrant重新加载就可以了。 遇难问题已经解决。

  ask by DEzra translate from so

未解决问题?本站智能推荐:

2回复

Laravel命令从Laravel工作

我有一个名为MyCommand的命令,我从一个名为MyJob的工作中调用它。 从作业调用时,我看不到命令​​输出。 但是,如果我直接从命令行运行命令,则会看到命令输出。 MyCommand.php代码: MyJob.php代码:
1回复

Laravel命令选项短

我在Laravel做了一个定制的Artisan命令,我想传递选项。 但是我看到例如make:controller可以选择使用-r或--resource传递资源控制器。 我的命令现在定义如下: 但是当我为命令帮助做-h ,我只看到--flag作为选项。 我想给出一个选项来写一个-f并
2回复

模拟 Laravel 命令依赖

正如官方 Laravel 的文档所说,我做了以下命令: 但是,我已经遵循 laravel 的方法和建议,而不是在这个问题中使用的方法,并且我利用依赖注入将我的模型作为服务插入。 所以我同时认为对它进行单元测试是个好主意: 但是在我的例子中,我已经通过handle函数将 Eloquent 模
2回复

使用laravel命令时找不到laravel命令

我最近安装了composer,并且也从commmand行的composer安装了laravel安装程序,就像他们在laravel文档中所说的那样 。 但是,当我在命令行上使用laravel命令时,它显示错误: 我还在路径变量中添加了环境变量。 但是使用laravel命令时仍然会
1回复

laravel 命令中的任何虚参数

是否可以使用 laravel 命令传递任何假想参数? 该参数不应在命令实现中定义。 例如这里是命令签名: 然后我可以通过以下方式使用此命令: 但我想使用其他参数:
1回复

如何使用Laravel命令执行外部PHP脚本?

我创建了几个php脚本(不是Laravel),我把它放在我的Laravel项目的app/cli文件夹中。 在cli文件夹里面我有php文件,比如: fileConverter.php fileUploader.php fileDownloader.php
1回复

Laravel 5.2命令,如何引用模型

在观看了一些有关laracast的视频并整日搜索之后,我仍然无法弄清这一点。 我正在尝试学习如何在laravel中使用命令,并且在创建命令后,除了无法从命令中引用模型这一事实以外,其他所有命令均有效。 尝试使用以下内容时,出现错误消息“ Undefined namespace App”。
2回复

Laravel 5:从分派的命令中检索数据

我有一个编写的命令UploadPhotoCommand ,用于将照片上传到我的应用程序。 该命令不是自处理的,因此我编写了一个处理程序UploadPhotoCommandHandler来配合它。 我像这样从控制器发出命令: 在命令处理程序中,我通过移动上载的图像,创建缩略图等并将