【问题标题】:max_execution_time is 240 second - exceeded the timeout of 60 secondsmax_execution_time 为 240 秒 - 超过了 60 秒的超时时间
【发布时间】:2020-08-03 16:05:59
【问题描述】:

我正在使用这个包来运行我的 bash:

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

当我想在 laravel 中运行 bash 时出现此错误:

进程 ***/my.sh 超过了 60 秒的超时时间。

$process = new Process('sh ***/my.sh');
       $process->run();

       // executes after the command finishes
       if (!$process->isSuccessful()) {
          throw new ProcessFailedException($process);
       }

phpinfo 内的 max_execution_time 函数是 240。我重新启动了服务器。 我的safe_mode 已关闭。我使用了这个功能:

set_time_limit(0);

在我的代码上方,但 60 秒后我收到了相同的错误消息。 我的.htdaccess 是 240 秒。

有什么想法吗?

【问题讨论】:

    标签: php laravel centos


    【解决方案1】:

    Process 类有自己的超时,根据Process docs

    默认情况下,进程的超时时间为 60 秒,但您可以更改它,将不同的超时时间(以秒为单位)传递给 setTimeout() 方法:

    use Symfony\Component\Process\Process;
    
    $process = new Process('sh ***/my.sh');
    $process->setTimeout(240);
    $process->run();
    

    您也应该检查idleTimetout,如果该过程可能需要很长时间而不输出任何数据:

    $process->setIdleTimeout(240);
    

    文档没有说明使用0 作为无限制。

    【讨论】:

      【解决方案2】:

      如果您想完全禁用setTimeoutsetIdleTimeout,只需将它们设置为null

      $process->setTimeout(null);
      $process->setIdleTimeout(null);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-29
        • 2019-03-25
        • 2020-03-22
        • 1970-01-01
        • 1970-01-01
        • 2018-08-31
        • 1970-01-01
        • 2018-05-08
        相关资源
        最近更新 更多