CodeIgniter中的长时间运行脚本在90分钟后显着减速

时间:2012-10-23 14:39:39

标签: php apache codeigniter

我有一个非常长的运行脚本,它使用大约3000万个数据库记录进行了大量的工作。每次我使用CLI启动它并让它运行时,它运行起来相当快,因为​​它正在做的工作量(大约5k记录/分钟)。然而,在大约90分钟后,它会急剧减速,需要2个小时才能完成5k记录。如果我重新启动它,它会再次运行大约90分钟。

Apache日志在放慢速度时没有显示任何内容,我只是不确定要在哪里查看。

在命令行上运行,PHP的最大执行时间应该无关紧要,我已经在CodeIngiter中注释了它将其设置为300的位置;我甚至在脚本的顶部添加了set_time_limit(0)

我的数据库是PostgreSQL。

关于在哪里寻找的任何建议?

编辑:好的,肯定似乎是一个记忆问题。但是我正在使用几个数组来缓存结果以进行批量插入和更新,但我之后将它们清除掉,并且在我达到90分钟之前它们被使用了很多次。

有没有办法看到目前在记忆中的内容?

编辑:我不知道这是否是我的另一个90分钟的解决方案,但如果您是有内存问题的CI用户,请查看此http://codeigniter.com/forums/viewthread/140012/#689396

1 个答案:

答案 0 :(得分:2)

您可以使用此功能memory_get_usage()查看您的内存使用情况。

您可以在内存中看到的唯一内容是您已经过delcared的数组或变量。任何已经unset(),重用或被删除的内容都会被垃圾收集器添加以供删除。


我在当天做了PHP导入脚本,你可能遇到的是内存问题。完成后,请务必清空阵列。

根据您希望在任务中获得多少乐趣,这可能会引起您的兴趣: http://gearman.org/

  

Gearman提供了一个通用的应用程序框架,可以将工作分配给更适合工作的其他机器或进程。