如何增加事务超时?我想上传视频,但是没有上传大尺寸的视频?
抛出错误The process *** exceeded the timeout of 60 seconds.
答案 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的配置,它标记在哪里。
如果您无法访问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超时非常相似。
所以如果你尝试过:
你已经使用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设置(如下所示)。
步骤4)在其中,右键单击PHP应用程序,然后选择编辑... 。
第5步)检查超时(如下所示)。
就我而言,默认超时时间是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);