我正在通过HTML表单通过CSV文件插入一个巨大的数据值。
我使用set_time_limit(0);
,以便脚本运行直到整个操作不执行。
致命错误:最大执行时间超过300秒C:'xampp'htdocs'clytics'include'clytics.database.php on line 135
现在,我正在尝试捕获这个致命错误
我已经使用set_time_limit(0);所以这个脚本一直运行到未执行操作
可能也需要更多内存。基本上,你的代码就像一头肥猪。你需要驯服它吞噬资源的方式。
但这只是你可能面临的整体架构问题的一个切线。
具体到这个问题,你的代码中是否有一些东西会覆盖set_time_limit(0);
的值?
另外,您是通过命令行还是通过Apache中的PHP运行此脚本?因为php.ini
的CLI配置与php.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值. ini。
然后阅读max_execution_time
这个出现了:
设置允许脚本运行的最长时间(以秒为单位)在被解析器终止之前。这有助于预防从绑定服务器编写脚本。默认值为30。当从命令行运行PHP时,默认设置为0。
然后,神奇的300
数字出现了:
您的web服务器可以有其他超时配置,也可能中断PHP的执行。Apache有一个Timeout指令,IIS有一个CGI超时功能。都默认为300秒。查看web服务器具体细节的文档。
现在你知道300是从哪里来的了。但是执行ini_set('MAX_EXECUTION_TIME', -1);
应该可以让您在没有超时的情况下运行脚本。
如果这些都不起作用,最后一点信息:查看max_input_time
:
设置允许脚本解析的最大时间(以秒为单位)输入数据,如POST和GET。计时从PHP诞生的那一刻开始在服务器端调用,并在执行开始时结束。
虽然max_input_time
似乎不相关,但在某些版本的PHP中,max_input_time
和max_execution_time
直接连接存在一个错误。