2009-06-23 80 views
0

我正在制定一个一次性PHP(5.2.6)脚本,它将数百万MySQL(5.0.45)数据库行迁移到另一个表中的另一个格式,同时保留(很多)相关内存中的数据用于增量计算。数据是逐步计算的。 (大约1000行)更新脚本随机停止

脚本在随机点意外停止,没有错误消息。我的问题是 - 我怎样才能找出脚本停止的原因。 (内存中断?由MySQL等超时...)

我有set_time_limit(0);所以它不是PHP超时。

+0

你会得到很好的建议。确保你没有在安全模式下运行,从set_time_limit()文档页面:“当PHP在安全模式下运行时,这个函数没有效果。除了关闭安全模式或改变时间之外,没有任何解决方法限制在php.ini中。“ http://php.net/set_time_limit – artlung 2009-06-23 15:43:16

+0

谢谢大家。解决方法是添加ini_set('memory_limit','200M');这确实是一个记忆问题。 – Nir 2009-06-24 10:36:54

回答

2

查看日志文件, 可能是内存

你需要在php.ini中添加更多内存 到memory_limit参数

1

你可以尝试关闭错误报告级别(在php.ini )真的很高,所以它抱怨更多的事情。

我的第一个猜测是你打你的执行时间限制或内存限制,脚本被终止,但你覆盖了。

1
  • 查看您的PHP日志文件。
  • 打开所有错误报告
    • error_reporting(E_ALL | E_STRICT);
1

您是否尝试运行命令行,而不是通过网络浏览器的PHP?也许服务器有一些导致它一旦达到特定内存使用率就会崩溃?

在一般情况下,批量操作不应该通过网络服务器完成,它可能会使部分操作失败。

0

谢谢大家的帮助(我投了相关答案)。问题是内存和设置ini_set('memory_limit','200M');解决它(这是一次性脚本)