Symfony2命令行应用程序在几分钟后被“杀死”

时间:2011-10-20 03:03:43

标签: command-line symfony

我有一个我构建的Symfony2命令行应用程序。它从Web服务中获取大量数据以进行预缓存。我遇到了一个问题,大约5分钟后,该应用程序被“杀死”。

我运行命令:

php app/console FTW:loadAuctionHouse

我的应用程序在运行时输出其步骤,并在几分钟后突然输出“已杀死” 所以......问题:命令行应用程序是否有内置时间限制?或者有什么“时髦”的东西?有人可以解释为什么会发生这种情况吗?

3 个答案:

答案 0 :(得分:1)

每个php应用程序(cli以及apache或其他任何东西)都有执行时间限制。添加

set_time_limit(0);

到命令行工具来防止这种情况发生。 注意:如果陷入无限循环或某种递归循环,这将导致脚本运行到无穷大。虽然这个解决方案比增加php.ini中的脚本执行时间要好,但只有在真正需要的时候才能完成。

答案 1 :(得分:0)

您是否在脚本中使用了Doctrine?

在这种情况下,这可能是一个内存问题;每次加载实体时,EntityManager都会保留一个引用,您需要分离/清除/刷新(取决于您的需要)您的实体。

http://www.doctrine-project.org/blog/doctrine2-batch-processing.html

http://docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/batch-processing.html

(链接更新)

答案 2 :(得分:0)

我发现这个问题是由PHP本身引起的。我已经升级了我的服务器上的操作系统(反过来升级了PHP版本),这个问题已得到修复。我做了进一步的调查,发现这个问题在php 5.3中得到了纠正