0

我正在努力使用通过 XML 导入数据的脚本。总共有大约 19,000 种产品,分布在 76 个文件中,我的脚本遍历每个文件,解析数据并将其导入数据库。

然而,由于某种原因,脚本终止而没有告诉我出了什么问题。

  1. 我正在error_reporting(E_ALL);使用ini_set("display_errors", 1);
  2. 我有关于 SQL 的错误报告,但没有错误
  3. 我正在通过memory_get_usage()- 不靠近集合来跟踪内存使用情况memory_limit
  4. time_limit()为每个项目重新设置了并且有足够的时间

奇怪的是,根据我输出的日志记录量,脚本会在不同的点停止。如果我不更改输出,脚本将在同一点停止。如果我添加(或删除)额外的日志记录(/输出),脚本会在不同的点停止。

似乎它与内存或超时有关,因为基于输出的随机点终止,但我无法弄清楚是什么原因造成的。没有错误消息...

我能做些什么来找出问题所在?

更新

毕竟似乎错误没有显示在服务器上。我只是强制执行了一个致命错误(删除了一个分号),然后我收到一条浏览器消息,说有一个 500 服务器错误。当我在本地机器上做同样的事情时,我会收到一条真正的错误消息。这可能是什么?当我打印时error_reporting(),我得到“1”并ini_get("display_errors")显示“6143”(即 E_ALL)。如何让错误消息显示?

我还检查phpinfo()了时间限制,默认情况下是 30,但是当我添加set_time_limit(60);before时phpinfo,它​​显示 60。所以一切似乎都是正确的。根据phpinfosafe_mode关闭

在为脚本执行计时后,我看到它在 12 秒后死亡 - 所以它不可能是 time_limit

4

2 回答 2

0

你需要看看

http://www.php.net/manual/en/info.configuration.php#ini.max-execution-time

也许您的脚本处于安全模式

http://php.net/manual/en/function.set-time-limit.php

于 2013-05-19T10:38:09.220 回答
0

事实证明,该错误是由无限循环(致命错误)引起的,并且由于在 php.ini 中关闭了 error_reporting,因此没有显示致命错误(如 @amir 所说)。我设法在我的本地机器上重现了这个问题,并且确实得到了导致我遇到问题的错误。

于 2013-05-19T12:08:05.023 回答