专门为 exec() 设置最大执行时间[重复]

Posted

技术标签:

【中文标题】专门为 exec() 设置最大执行时间[重复]【英文标题】:Set maximum execution time for exec() specifically [duplicate] 【发布时间】:2011-01-13 05:26:58 【问题描述】:

是否可以设置exec($command)函数的最大执行时间?有时我的$command 执行时间过长,1 分钟后停止并出现此错误:

致命错误:C:\xampp\htdocs\files.php 第 51 行的最大执行时间超过了 60 秒

如何增加exec() 命令的最大执行时间?

    if (allow()) 
    exec($command);

    if (file_exists($file)) 
        //exec($makeflv);
        echo '<script language="javascript" type="text/javascript">window.top.window.aviout(1);</script>';

     else 
        echo $error;
        

 else 
   echo $error;
   

【问题讨论】:

顺便说一句,这个问题至少被回答了 3 次:***.com/questions/1176497/…、***.com/questions/1928249/… 和 ***.com/questions/2147567/… 【参考方案1】:

见http://php.net/manual/en/function.set-time-limit.php

set_time_limit($seconds)

如果$second 设置为0,则没有时间限制。请注意,您应该谨慎地完全取消时间限制。您不希望任何无限循环慢慢消耗所有服务器资源。上限,例如180 总比没有限制好。

或者,您可以仅针对某些代码块调整时间设置,并在时间关键代码运行后重置时间限制,例如

$default = ini_get('max_execution_time');
set_time_limit(1000);
... some long running code here ...
set_time_limit($default);

【讨论】:

好的,我把 set_time_limit(180) 放在 exec($command) 之前;它似乎工作!但是在时间到期后,我想回显一个错误,我该怎么做?? 超过时限会自行抛出错误。这就是让您首先提出问题的原因。如果您需要自定义错误处理程序,请参阅php.net/manual/en/function.set-error-handler.php 是的,但是当我提交一个以 iframe 开头的 process.php 页面时,我只想回应这个: 其中结果是错误还是成功! 如果set_error_hander 没有帮助,那我恐怕不明白。考虑提出一个新问题,因为它是一个不同的问题。 @SuhailGupta 用于整个 请求【参考方案2】:

.htaccess 中,您可以设置这些值:

php_value max_execution_time 1000000
php_value max_input_time 1000000

您也可以在 PHP 脚本的顶部尝试此操作:

set_time_limit(0);

【讨论】:

【参考方案3】:

你可以像这样使用ini_set()

ini_set('max_execution_time', 0);

将其设置为 0 将使您的脚本根据documentation of the ini-directive 永远运行。

【讨论】:

如何在我的函数中包含 ini_set()? 在任何你喜欢的地方插入行。不涉及魔法。

以上是关于专门为 exec() 设置最大执行时间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

最高返回执行 - 超时

PHP 执行系统外部命令 system() exec() passthru()

执行二进制文件时出现“exec格式错误”[重复]

如何在php中增加最大执行时间[重复]

PHP 执行 exec 无响应,如果在cmd直接执行则几秒就执行完毕!求解决方法

Centos PHP+Apache执行exec()等Linux脚本权限设置的详细步骤