我从其他程序员那里继承来的一个应用程序存在一个主要问题。 它具有许多复杂的页面,将列表视图与来自本地数据库,谷歌地图,图像等的数据结合在一起。在运行Android 6的设备上,它或多或少都可以,但是客户正在运行Android 5.1和Windows XP的Samsung Tab S2上对其进行 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我有一个实现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机器
所以,首先,谢谢大家指出我关于PHP和laravel内存使用情况跟踪的正确方向。
我已经回答了我自己的问题,希望将来有利于laravel开发者,因为我的解决方案很难找到。
输入'dmesg'后显示系统消息。 我发现php脚本被Linux杀死了。
因此,我在脚本的每个关键区域之前和之后将内存日志记录调用添加到我的脚本中:
Log::Info('Memory now at: ' . memory_get_peak_usage());
然后我在观察日志输出的同时运行脚本以及'top'命令的输出。
我发现即使我的方法结束并且变量超出范围,内存也没有被释放。
我试过的东西, DIDNT在我的情况下有所不同:
现在,奇怪的是,以上都没有任何区别。 我的剧本在被杀的时候仍然使用150mb或ram!
实际工作的解决方案:
现在这绝对是一个特定的解决方案。 但我的脚本目的主要是解析一个大的xml feed,然后使用Elequent ORM将数千行插入到mysql中。
事实证明,Laravel创建了日志信息和对象,以帮助您查看查询性能。
通过以下“魔术”调用将其关闭,我将脚本从150mb降低到大约20mb!
这就是'魔术'; 呼叫:
DB::connection()->disableQueryLog();
当我发现这个电话时,我可以告诉你,我正在抓稻草;-(
一个进程可能会被杀死有几个原因:
记不清
有两种方法可以触发此错误:超过在php.ini中分配给PHP脚本的内存量,或超过可用的系统内存。 检查PHP错误日志和php.ini文件以排除第一种可能性,并使用dmesg输出检查第二种可能性。
超出执行超时限制
在您的帖子中,您指示您通过max_execution_time
设置禁用了超时,但我已将其包含在此处以保证完整性。 确保php.ini中的设置正确并且(对于那些使用Web服务器而不是CLI脚本的设置)重新启动Web服务器以确保新配置处于活动状态。
堆栈中的错误
如果您的脚本没有错误且没有遇到上述任何一种错误,请确保您的系统按预期运行。 使用Web服务器时,请重新启动Web服务器软件。 检查错误日志以查找意外输出,并停止或升级相关的守护程序并且需要。
在Laravel / Spark项目中遇到过这个问题。 只是想分享其他人是否有这个问题。
如果在更积极的方法之前运行Vagrant或Ubuntu,请尝试刷新/重新启动您的开发服务器。
我不小心在Vagrant服务器上运行了依赖包的安装。 我还在安装错误期间反复删除并替换了镜像文件夹。 我的错误发生在Laravel / Spark 4.~上。 我能够在其他项目上运行迁移; 在几乎所有命令的特定项目中,我很快就被“杀死”了300毫秒的时间框架。 阅读其他用户,我害怕试图找到问题或腐败。 在我的情况下,快速的Vagrant重新加载就可以了。 遇难问题已经解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.