如何在php中增加执行超时?

时间:2010-09-30 09:40:12

标签: php

如何增加事务超时?我想上传视频,但是没有上传大尺寸的视频?

抛出错误The process *** exceeded the timeout of 60 seconds.

14 个答案:

答案 0 :(得分:102)

您需要更改php.ini中的某些设置:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must - sets the maximum time in seconds

您的PHP.ini位于何处取决于您的环境,更多信息:http://php.net/manual/en/ini.list.php

答案 1 :(得分:47)

你也应该能够在运行时使用

set_time_limit(100);

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

或在您的vhost-config

php_admin_value max_execution_time 10000

对于不太可靠的应用程序而言,由于性能原因,将全局执行时间限制为低是一个好主意。因此,您可能希望仅允许这些脚本运行更长时间,而且必须运行。

p.s。:别忘了post_max_size和upload_max_filesize(就像第一个答案告诉allready)

答案 2 :(得分:17)

完成Hannes的答案。

您需要更改php.ini中的某些设置:

upload_max_filesize = 2M 
;or whatever size you want

max_execution_time = 60
; also, higher if you must

如果有人想要无限制地放入(我不知道为什么,但如果你想要),你可以把两次放到0:

您需要更改php.ini中的某些设置:

upload_max_filesize = 0 

max_execution_time = 0

如果你不知道你的php.ini在哪里。你可以做一个文件" name.php"在您的服务器中并放置:

<?php phpinfo(); ?>

在您的网站上,您可以看到您的php.ini的配置,它标记在哪里。

2015年1月9日编辑:

如果您无法访问php.ini,则还有两个选项。

您可以直接在&#34; name.php&#34;中设置此行。文件,但我找不到upload_max_filesize这个选项:

set_time_limit(0);

或者&#34; .htaccess&#34;

php_value upload_max_filesize 0
php_value max_execution_time 0

答案 3 :(得分:7)

如果您需要做的只是针对1或2页,我建议使用set_time_limit,这样就不会影响整个应用程序。

set_time_limit(some_values);

但是当然这两个值(post_max_size&amp; upload_max_filesize)需要调查。

您可以通过ini_set功能

进行设置
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');

或直接在php.ini文件中,如Hannes上面的回复,或者甚至将它设置为iin .htaccess,如下所示

php_value upload_max_filesize 2M
php_value post_max_size 20M

答案 4 :(得分:4)

作为上述答案的补充,您可以使用set_time_limit()功能:

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

传递0作为参数将使您的脚本在没有时间限制的情况下运行。

答案 5 :(得分:3)

你有一个错字:ini_set('max_input_time','200M') - 值集需要是一个int,比如ini_set('max_input_time','200')

答案 6 :(得分:2)

我知道你是专门询问PHP超时,但似乎没有人提到的是网络服务器上也可能存在超时,它看起来与PHP超时非常相似。

所以如果你尝试过:

  1. 通过添加一行来增加php.ini中的超时:max_execution_time = {秒数,即一分钟为60}
  2. 通过添加以下内容来增加脚本本身的超时:ini_set('max_execution_time','{秒数,即60分钟一分钟}};
  3. 你已经使用phpinfo()函数检查了max_execution_time确实增加了,那么你可能想尝试将它添加到.htaccess,这将确保Apache本身不会超时:

    RewriteRule .* - [E=noabort:1]
    RewriteRule .* - [E=noconntimeout:1]
    

    更多信息: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/

答案 7 :(得分:2)

如果您恰好使用的是 Microsoft IIS 服务器,除了其他人提到的 php.ini 设置外,您可能还需要增加该服务器的执行超时设置IIS服务器管理器中的PHP FastCGI应用程序:

第1步)打开IIS服务器管理器(通常在“开始”菜单的服务器管理器下,然后打开工具 / Internet信息服务(IIS)管理器)。

第2步)点击主连接(不特定于任何特定域)。

步骤3)在 IIS 部分下,找到 FastCGI设置(如下所示)。

enter image description here

步骤4)在其中,右键单击PHP应用程序,然后选择编辑...

第5步)检查超时(如下所示)。

enter image description here

就我而言,默认超时时间是70秒和90秒;前者在PHP脚本上导致了 500 Internal Server Error ,花费了超过70秒的时间。

答案 8 :(得分:1)

如果您无法编辑php.ini(例如在您的服务器上),您可以尝试从您的php代码中更改php.ini参数。尝试:

ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');

如果这不起作用,请尝试以相同的方式设置'set_time_limit',除此之外,我会说您唯一的选择是联系您的主机。在安全模式下无法修改这些设置。

答案 9 :(得分:1)

测试您是否是安全模式 - 如果不是 - 将时间限制(本地值)设置为您想要的:

if(!ini_get('safe_mode')){

    echo "safe mode off";
    set_time_limit(180);// seconds

    phpinfo();// see 'max_execution_time'
}

*如果安全模式“开启”,则无法通过此方式设置时间限制。

答案 10 :(得分:1)

首先通过phpinfo()检查php.ini文件路径;然后更改了PHP.INI参数:

upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30

restarted Apache

参数或者set_time_limit(0); // safe_mode已关闭

ini_set(&#39; max_execution_time&#39;,500); // 500秒

注意:你也可以使用命令在linux中找到php.ini

locate php.ini

答案 11 :(得分:1)

可选:如果您设置了有关php.ini的配置,但仍然无法上传

-这是用于检查错误代码的php函数

$error_type = [];
$error_type[0] = "There is no error";
$error_type[1] = "The uploaded file exceeds the upload_max_filesize directive in php.ini.";
$error_type[2] = "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.";
$error_type[3] = "The uploaded file was only partially uploaded.";
$error_type[4] = "No file was uploaded.";
//$error_type["5"] = "";
$error_type[6] = "Missing a temporary folder. Introduced in PHP 5.0.3.";
$error_type[7] = "Failed to write file to disk. Introduced in PHP 5.1.0.";
$error_type[8] = "A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help. Introduced in PHP 5.2.0.";
//------------------------------
//--> show msg error.
$status_code = $_FILES["uploadfile"]["error"];
if($status_code != 0){
    echo $error_type[$status_code];
    exit;
}

答案 12 :(得分:0)

您还可以在.htaccess文件中设置最长执行时间:

php_value max_execution_time 180

答案 13 :(得分:0)

要真正增加时间限制,我更喜欢先获取当前值。 set_time_limit并不总是增加时间限制。如果当前值(例如来自php.ini或以前设置的值)高于当前调用set_time_limit中使用的值,则会减小时间限制!

那么像这样的小帮手呢?

/**
 * @param int $seconds Time in seconds
 * @return bool
 */
function increase_time_limit(int $seconds): bool
{
    return set_time_limit(max(
        ini_get('max_execution_time'), $seconds
    ));
}

// somewhere else in your code
increase_time_limit(180);

另请参阅:Get max_execution_time in PHP script