PHP GoDaddy 最长执行时间无效

PHP GoDaddy maximum execution time not working

默认 maximun_execution_time 为 120 秒。我已按照所有说明创建 php.ini 文件并放置在正确的位置 public_html。我运行 phpinfo() 发现maximun_execution_time已经成功调整为600秒

但是问题是超过120秒的脚本还是执行不了。执行时间 2 分钟后,它将 return 错误代码 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秒并提交,它不会return "woke up" 消息而是提示错误代码500。

最新更新

我已经与 GoDaddy 支持人员交谈,他们说我的 php.ini 工作正常,因为他们可以看到 max_execution_time 值已更改为 600 秒。但是他们无法回答我为什么会出现超时问题。他们坚称这是我的脚本问题,并说我的测试脚本对测试执行时间无效。

我给他们看了另一个我认为是最简单的测试脚本。该消息将永远不会显示,因为它超过 120 秒,并且它将 return 错误代码 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 支持服务没有我想象的那么好。

将此添加到 php 脚本的顶部:

set_time_limit(600);
//or set_time_limit(0); unlimited time
ignore_user_abort(1);

将它放在 PHP 脚本的顶部

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

如果可行,那么 运行

哪里是php

检查输出文件夹位置并转到此位置 php.ini 文件。检查 max_input_time=?

000webhost和bluehost和ProISP同样的问题,任何PHP进程运行超过120秒都将被终止,无论设置如何,以防止服务器过载,你必须问一位工程师(实际上知道问题出在哪里)让您的 account/script 获得此安全功能的豁免(祝您好运。只有 ProISP 实际上为我提供了针对 1 个特定 php 脚本的豁免。 .) - 或者您可以购买 VPS (例如 ramnode.com ),或使用没有此限制的虚拟主机(如 syse.no ),或使用可能是 愿意给你豁免(比如 proisp.no )

GoDaddy 支持人员是弱智。为什么? header("refresh:30; url=http://my-site.net"); 这将使您的浏览器重定向并且与 php 执行时间无关,他们无法找到问题的真正原因,真正的问题与您的 cpu 使用无关。

This post 使我能够提高我的 PHP 限制。

关键信息:

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

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

领先.

  1. 在此 .user.ini 文件中添加 max_execution_time = 180

这会将 GoDaddy max_execution_time 增加到 3 分钟。

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

解法: 我找到的唯一解决方案是呼叫 Godaddy 支持。一旦他们允许许可,您将能够在以下路径中找到 PHP 变量的可编辑字段。

路径 : 主页 > 软件 > PHP 版本 > 切换到 PHP 选项