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

已达到PHP最大执行:脚本忽略PHP.ini文件并设置时间限制,php,jquery,ajax,Php,Jquery,Ajax,我同时向一个PHP脚本发出7个get请求——其中两个请求成功,其他请求的最大执行时间超过60秒 问题是,我已经把这个放在了我的剧本的顶端: set_time_limit(300000); 我也在PHP.ini文件中设置了这一点,并多次重新启动apache max_execution_time = 300000 为什么它总是给我这个错误 谢谢大家 更新 我刚刚看了firebug,它看起来好像所有的请求都没有被完全激发,也就是说,它表明请求仍在尝试发出。在这种情况下,如果对PHP发出请求但尚未

我同时向一个PHP脚本发出7个get请求——其中两个请求成功,其他请求的最大执行时间超过60秒

问题是,我已经把这个放在了我的剧本的顶端:

set_time_limit(300000); 
我也在PHP.ini文件中设置了这一点,并多次重新启动apache

max_execution_time = 300000
为什么它总是给我这个错误

谢谢大家

更新 我刚刚看了firebug,它看起来好像所有的请求都没有被完全激发,也就是说,它表明请求仍在尝试发出。在这种情况下,如果对PHP发出请求但尚未开始执行,PHP是否可能抛出该错误

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

更新2 仅显示完整错误:

[Mon Nov 23 13:05:37 2009][error][client 127.0.0.1]PHP致命错误: 最长执行时间为60秒 超过 C:\wamp\www\webs\process\u txt.php 在第1行,参考:


为什么会显示第1行?

检查
ini\u get
是否报告了正确的“最大执行时间”。还要确保它报告“安全模式”
0
(尽管在PHP6中这已被弃用并设置为删除),如下所示:

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

另请注意:

您的web服务器可以有其他超时配置,这些配置也可能会中断PHP的执行。Apache有一个超时指令,IIS有一个CGI超时函数。两者都默认为300秒。有关特定详细信息,请参阅web服务器文档

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

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

对于($i=1;$i此外,请确保您使用的php.ini文件正确。经常会使用错误的文件。调用phpinfo()检查它输出的php.ini路径。

对于“max\u execution\u time”
ini\u得到了什么报告?刚刚对此进行了检查,它返回“300000”-这就是我在PHP.ini文件中看到的-发生了什么事?我相信您可以同时对一个脚本执行多个请求,对吗?关于您的更新:不,这可能意味着FireBug尚未收到服务器的响应,可能是因为脚本仍在运行。您可以让服务器通过使用
ob_flush()
。我认为我的AJAX get请求是异步的-启动一个请求,然后等待响应?是的,这是真的。但是,如果脚本仍在运行,并且输出尚未刷新,FireBug在脚本超时之前不会看到响应。我检查了最大执行时间并返回了3000。我还查看我的ini文件和安全模式已设置为Off。注意,您可能还必须更改Apache或IIS超时。只需查看我的Apache 2.2.1.1 httpd.conf,那里与超时等无关-我是否应该查看其他位置?我认为Apache 2.2应该有多个.conf文件?默认情况下,Apache等待事件完成请求的时间为300秒。请参阅文档:我也确保了这一点-查看phpinfo会显示我期望的设置。