达到PHP最大执行次数:脚本忽略PHP.ini文件并设置时间限制

时间:2009-11-23 12:02:22

标签: php jquery ajax

我同时向一个PHP脚本发出7个get请求 - 其中两个请求成功,另一个请求我得到的Max Execution输出超过60秒!

问题是我把它放在我的脚本的顶部:

set_time_limit(300000); 

我也在我的PHP.ini文件中设置了这个,并且已经多次重启apache。

max_execution_time = 300000

为什么它一直给我这个错误?!?

全部谢谢

更新

我刚刚查看了firebug,看起来好像所有请求都没有被完全解雇,即它显示请求仍在尝试进行。在这种情况下,如果已经向它发出请求但是它还没有开始执行,那么PHP是否可能抛出该错误!

它在第1行给了我这个错误 - 所以它甚至没有运行这个脚本的任何部分 - 这是什么意思?

更新2

只显示完整错误:

  

[Mon Nov 23 13:05:37 2009] [错误] [client 127.0.0.1] PHP致命错误:   最长执行时间为60秒   超过了   C:\ WAMP \ WWW \网\ process_txt.php   在第1行,引用者:   http://localhost/webs/front-end/path.php

为什么说第1行?

2 个答案:

答案 0 :(得分:1)

检查ini_get是否报告了正确的“max_execution_time”。还要确保它报告“safe_mode”0(虽然这已被弃用并在PHP 6中设置为删除),因为PHP docs state

  

当PHP以安全模式运行时,此功能无效。除了关闭安全模式或更改php.ini中的时间限制外,没有其他解决方法。

另请注意in the documentation

  

您的Web服务器可能有其他超时配置,也可能会中断PHP执行。 Apache有一个Timeout指令,IIS有一个CGI超时功能。两者都默认为300秒。有关具体详细信息,请参阅Web服务器文档。

缩小您的问题范围。暂时忽略Ajax并在相关页面上执行正常的HTTP请求。测试超时以确保实际达到执行时间:

for ($i=1; $i<=300; $i++) {
    echo "<p>$i seconds</p>";
    flush();
    ob_flush();
    sleep(1);
}

答案 1 :(得分:0)

另外,请确保使用正确的php.ini文件。使用错误的一个经常发生。调用phpinfo()检查它输出的php.ini路径。