我同时向一个PHP脚本发出7个get请求 - 其中两个请求成功,另一个请求我得到的Max Execution输出超过60秒!
问题是我把它放在我的脚本的顶部:
set_time_limit(300000);
我也在我的PHP.ini文件中设置了这个,并且已经多次重启apache。
max_execution_time = 300000
为什么它一直给我这个错误?!?
全部谢谢
我刚刚查看了firebug,看起来好像所有请求都没有被完全解雇,即它显示请求仍在尝试进行。在这种情况下,如果已经向它发出请求但是它还没有开始执行,那么PHP是否可能抛出该错误!
它在第1行给了我这个错误 - 所以它甚至没有运行这个脚本的任何部分 - 这是什么意思?
只显示完整错误:
[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行?
答案 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路径。