如何处理PHP中的致命错误?

时间:2014-06-09 06:30:35

标签: php mysql

我通过HTML格式通过CSV文件插入大量数据。

我使用了set_time_limit(0);,因此脚本会一直运行,直到不执行整个操作。

  

致命错误:超出最长执行时间300秒   第135行的C:\ xampp \ htdocs \ clytics \ include \ clytics.database.php

现在,我正试图抓住这个致命的错误。

1 个答案:

答案 0 :(得分:2)

  

我使用过set_time_limit(0);这样脚本一直运行到整个   不执行操作。

可能还需要更多内存。基本上你的代码只是一个猪和一个你需要驯服它吞噬资源的方式。

但这只是您可能面临的整体架构问题的切入点。

特定于此问题,您的代码中是否会覆盖set_time_limit(0);的值?

另外,您是通过命令行还是Apache中的PHP运行此脚本?因为CLI配置php.iniphp.ini的Apache模块配置完全不同。

例如,在Ubuntu上,Apache PHP php.ini就在这里:

/etc/php5/apache2/php.ini

但是命令行(CLI)php.ini在这里:

/etc/php5/cli/php.ini

如果您想强制您的脚本占用内存而不管您的配置设置如何,您可以将其添加到PHP文件的顶部:

ini_set('MAX_EXECUTION_TIME', -1);

如果有人在set_time_limit上阅读更多内容,则会出现:

  

设置允许脚本运行的秒数。如果是这样的话   到达后,脚本返回致命错误。默认限制为30   秒,或者,如果存在,则定义的max_execution_time值   php.ini中。

然后阅读max_execution_time,这就出现了:

  

设置允许脚本运行的最长时间(以秒为单位)   在它被解析器终止之前。这有助于防止不良   从捆绑服务器编写脚本。默认设置为30。   从命令行运行PHP时,默认设置为0。

然而,魔术300号出现了:

  

您的网络服务器可能还有其他超时配置   中断PHP执行。 Apache有一个Timeout指令,IIS有一个   CGI超时功能。 默认为300秒。查看您的网络服务器   有关具体细节的文档。

所以现在你知道300来自哪里了。但是,执行ini_set('MAX_EXECUTION_TIME', -1);可以让您在没有超时的情况下运行脚本。

最后一点信息,如果这些都不起作用:查看max_input_time

  

这设置允许脚本解析的最长时间(以秒为单位)   输入数据,如POST和GET。时间从PHP开始的那一刻开始   在服务器上调用,在执行开始时结束。

虽然max_input_time可能似乎没有关联,但在某些版本的PHP中,存在max_input_timemax_execution_time直接连接的错误。