默认 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>
截图:
https://i.stack.imgur.com/JsxXC.jpg https://i.stack.imgur.com/JsxXC.jpg
https://i.stack.imgur.com/jiZJI.jpg https://i.stack.imgur.com/jiZJI.jpg
如果我将睡眠时间设置为121秒并提交,它不会返回“唤醒”消息,而是提示错误代码500。
最新更新
我与 GoDaddy 支持人员交谈过,他们说我的 php.ini 工作正常,因为他们可以看到 max_execution_time 值已更改为 600 秒。但他们无法回答我为什么会出现超时问题。他们坚持认为这是我的脚本问题,并说我的测试脚本对于测试执行时间无效。
我向他们展示了另一个测试脚本,我认为这是最简单的。该消息永远不会显示,因为它超过 120 秒,并且将返回错误代码 500 内部服务器错误。
<?php
sleep(121); echo "sleep(121) completed";
?>
他们向我展示了他们的测试脚本,并声称 max_execution_time 设置工作正常。
test.php:test.php将在30秒后重定向到我的主页。
header( "refresh:30; url=http://my-site.net" );
echo "please wait 30 seconds";
他们向我展示的另一个测试脚本是无限循环“for(;;) ;”。当超过 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 支持服务没有我想象的那么好。