默认的maximun_execution_time是120秒。我已按照所有说明创建php.ini文件并放置在正确的位置public_html。我运行了phpinfo(),发现maximun_execution_time已成功调整为600秒。
但问题是它仍然无法执行超过120秒的脚本。执行2分钟后,它将返回错误代码500内部服务器错误。
sleep.php文件:
<?php
$sleepTime = isset($_POST['sleepTime'])? intval($_POST['sleepTime']): 0;
sleep($sleepTime);
echo " woke up";
?>
sleep.html文件:
<script>
var beginSleep=function() {
var timeNow = new Date();
$('input[type=button]').attr("disabled", true);
$('#msg').html(timeNow.getHours()+":"+timeNow.getMinutes()+":"+timeNow.getSeconds()+" Sleeping...<br>");
$.ajax({
url: "sleep.php",
data: $('#formSleep').serialize(),
type:"POST",
dataType:'text',
success: function(msg) {
timeNow = new Date();
$('#msg').append(timeNow.getHours()+":"+timeNow.getMinutes()+":"+timeNow.getSeconds()+msg);
$('input[type=button]').removeAttr("disabled");
},
error:function(xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
};
</script>
<form id="formSleep" method="post" action="sleep.php">
<p>Sleep time(seconds):</p><input type="text" name="sleepTime" value="5" />
<input type="button" value="submit" onclick="beginSleep()" />
</form>
<p id="msg"></p>
截屏:
http://i.imgur.com/IAiSpPS.jpg
http://i.imgur.com/w7A1nKA.jpg
如果我将睡眠时间设置为121秒并提交,则不会返回“醒来”消息,但会提示错误代码500.
最新更新
我已经和GoDaddy支持了,他们说我的php.ini工作正常,因为他们可以看到max_execution_time值已经改为600秒。但他们无法回答我为什么会发生超时问题。他们坚持认为这是我的脚本问题,并说我的测试脚本无法测试执行时间。
我向他们展示了另一个我认为最简单的测试脚本。该消息永远不会显示,因为它超过120秒,它将返回错误代码500内部服务器错误。
<?php
sleep(121); echo "sleep(121) completed";
?>
他们向我展示了他们的测试脚本并声称max_execution_time设置工作正常。
test.php:30秒后test.php将重定向到我的主页。
header( "refresh:30; url=http://my-site.net" );
echo "please wait 30 seconds";
他们向我展示的另一个测试脚本是“(;;);”的无限循环。超过120秒时,此测试脚本也会自动超时。除此之外,无限循环消耗了80%的CPU资源。
register_shutdown_function(function() {
echo "shutdown function called\n";
});
set_time_limit(600); // Set time limit to 1 second (optional)
for (;;) ;
他们断定我的max_execution_time无法正常工作是由于我没有足够的CPU资源。
我不相信他们所说的,因为sleep()不会占用太多资源。我试过并行运行测试脚本,但CPU使用率为0%。除此之外,我不认为header(“refresh:30”,url = ...)函数可以算作一个长时间运行的脚本。 GoDaddy的支持服务不如我预期的那么好。
答案 0 :(得分:1)
与000webhost和bluehost以及ProISP相同的问题,任何运行超过120秒的PHP进程都将终止,无论设置如何,以防止服务器过载,并且您必须询问工程师(实际上知道问题是什么) )为您的帐户/脚本获得此安全功能的豁免(祝您好运。只有ProISP实际上给了我一个豁免,对于1个特定的PHP脚本..) - 或者您可以购买VPS(例如,ramnode.com) ,或使用没有此限制的webhost(如syse.no),或使用可能的webhost 愿意给你一个豁免(如proisp.no)
GoDaddy支持人员迟钝。为什么?标题(“refresh:30; url = https://developers.facebook.com/docs”); 这将使你的浏览器重定向并与php执行时间无关,他们无法找到问题的真正原因,真正的问题与你的cpu使用无关。
答案 1 :(得分:1)
This post让我增加了PHP限制。
关键信息:
打开与GoDaddy托管帐户的SFTP连接
在与wp-config.php
相同的目录中,创建一个.user.ini
文件。
注意领先的.
.user.ini
文件中添加max_execution_time = 180
这会将GoDaddy max_execution_time
增加到3分钟。
答案 2 :(得分:0)
将它添加到php脚本的顶部:
set_time_limit(600);
//or set_time_limit(0); unlimited time
ignore_user_abort(1);
答案 3 :(得分:0)
将它放在PHP脚本的顶部
{{1}}
如果有效,则运行
whereis php
检查输出文件夹位置并转到此位置php.ini文件。检查max_input_time =?
答案 4 :(得分:0)