【问题标题】:cPanel Apache empty response after 60 seconds60 秒后 cPanel Apache 空响应
【发布时间】:2014-10-24 21:46:54
【问题描述】:

我目前正在尝试增加 PHP 脚本的最大执行时间,但我不明白为什么 Apache 总是在 60 秒后返回空响应。

我已经增加了 PHP 的最大执行时间、最大帖子大小和最大上传大小。我已经验证了 Tweak 设置和 Apache 设置,以查看是否存在与最大请求时间或超时的最大执行时间相关的内容……找不到任何东西。

也许问题与内存使用或其他问题有关,但我无法弄清楚。

我有一个第三方模块是 Varnish,当我尝试使用 Varnish 完成我的请求时,一切正常。否则,如果我禁用它(它当前被禁用),apache 不能给我回复。我从谷歌浏览器得到这个:

没有收到数据 错误代码:ERR_EMPTY_RESPONSE

PHP 脚本就是这个:

<?php

    $timeInSeconds = 70;

    $start = microtime(true);
    $end = $start + $timeInSeconds;
    $diff = $end - $start;
    echo 'start: '.$start.'<br />';
    while ($start < $end)
    {
            $start = microtime(true);
    }
    echo 'end: '.$end.'<br />';
    echo 'difference: '.$diff;

使用命令行,一切正常。

【问题讨论】:

  • 错误日志什么也没说。这真的很奇怪。 access_log 中只有 1 个条目,这是我执行的 GET 请求。
  • 这是我管理的 cPanel/WHM 服务器。专用服务器。
  • 如果托管在共享主机上,有时它们会杀死运行时间超过 X 的脚本
  • 这是我拥有的专用服务器。我是管理员。我尝试将其配置为允许我执行(通过 apache)超过 60 秒的 php 脚本。
  • 好吧,如果我有想法,对不起;(

标签: php apache cpanel varnish


【解决方案1】:

转到 WHM >> 服务管理器 >> Apache 配置 >> 全局配置(我不知道正确的菜单名称,因为我的 WHM 是葡萄牙语)并更改超时值。

【讨论】:

    【解决方案2】:

    你能用下面的脚本检查一下吗 这将在运行时将输出缓冲区刷新到屏幕

    <?php
    
    $timeInSeconds = 70;
    
    $start = microtime(true);
    $end = $start + $timeInSeconds;
    $diff = $end - $start;
    echo 'start: '.$start.'<br />';
    while ($start < $end)
    {
        $start = microtime(true);
        echo $start;
        ob_flush();
        flush();
        sleep(1);
    }
    echo 'end: '.$end.'<br />';
    echo 'difference: '.$diff;
    

    有关刷新的更多信息: http://php.net/manual/en/function.flush.php

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2018-05-08
      • 2019-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多