PHP GoDaddy最大执行时间不起作用

时间:2015-05-04 03:19:52

标签: php configuration-files

默认的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的支持服务不如我预期的那么好。

5 个答案:

答案 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限制。

关键信息:

  1. 打开与GoDaddy托管帐户的SFTP连接

  2. 在与wp-config.php相同的目录中,创建一个.user.ini文件。

  3. 注意领先的.

    1. 在此.user.ini文件中添加max_execution_time = 180
    2. 这会将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)

Godaddy 默认情况下不允许更新服务器配置。 即使您找到路径og php.ini,您也无法根据其政策通过SSH / FTP客户端进行编辑。

解决方案: 我发现的唯一解决方案是Called Godaddy支持。一旦他们允许,您就可以在PHP变量的以下路径中找到可编辑字段。

路径:主页&gt;软件&gt; PHP版本&gt;切换到PHP选项 enter image description here