Como aumentar o tempo limite da transação? Quero fazer upload de vídeos, mas os vídeos em tamanho grande não foram enviados?
Lança erro The process *** exceeded the timeout of 60 seconds.
Como aumentar o tempo limite da transação? Quero fazer upload de vídeos, mas os vídeos em tamanho grande não foram enviados?
Lança erro The process *** exceeded the timeout of 60 seconds.
Respostas:
Você precisa alterar algumas configurações em seu 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
A localização do seu PHP.ini depende do seu ambiente, mais informações: http://php.net/manual/en/ini.list.php
Você deve ser capaz de fazer durante a execução também usando
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
ou em seu vhost-config
php_admin_value max_execution_time 10000
Ter um limite de tempo de execução global BAIXO é principalmente uma boa ideia por motivos de desempenho em aplicativos não tão confiáveis. Portanto, você pode permitir que apenas esses scripts sejam executados por mais tempo do que absolutamente necessário.
ps: Não se esqueça de post_max_size e upload_max_filesize (como a primeira resposta disse allready)
Para completar a resposta de Hannes.
Você precisa alterar algumas configurações em seu php.ini:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Se alguém quiser colocar em ilimitado (não sei por que, mas se quiser), você pode definir o tempo para 0:
Você precisa alterar algumas configurações em seu php.ini:
upload_max_filesize = 0
max_execution_time = 0
E se você não sabe onde está o seu php.ini. Você pode fazer um arquivo "name.php" no seu servidor e colocar:
<?php phpinfo(); ?>
E no seu site, você pode ver a configuração do seu php.ini e está marcado onde está.
Se você não consegue acessar seu php.ini, você tem mais duas opções.
Você pode definir esta linha diretamente no seu arquivo "name.php", mas não encontro upload_max_filesize para esta opção:
set_time_limit(0);
Ou em ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
se o que você precisa fazer é específico apenas para 1 ou 2 páginas, sugiro usar set_time_limit para que não afete todo o aplicativo.
set_time_limit(some_values);
mas é claro que esses 2 valores (post_max_size & upload_max_filesize) estão sujeitos a investigação.
você pode configurá-lo através da função ini_set
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
ou diretamente no arquivo php.ini como a resposta acima de Hannes, ou mesmo configurá-lo em .htaccess como abaixo
php_value upload_max_filesize 2M
php_value post_max_size 20M
Além das respostas acima, você pode usar a set_time_limit()
função:
http://php.net/manual/en/function.set-time-limit.php
passar 0
como um argumento fará com que seu script seja executado sem limite de tempo.
Se você estiver usando o servidor Microsoft IIS , além das configurações de php.ini mencionadas por outros, pode ser necessário aumentar as configurações de tempo limite de execução para o aplicativo PHP FastCGI no Gerenciador de servidor IIS:
Etapa 1) Abra o Gerenciador do Servidor IIS (geralmente em Gerenciador do Servidor no Menu Iniciar e, em seguida, Gerenciador de Ferramentas / Serviços de Informações da Internet (IIS) ).
Etapa 2) Clique na conexão principal (não específica para nenhum domínio em particular).
Etapa 3) Na seção IIS , encontre configurações FastCGI (mostrado abaixo).
Etapa 4) Aí, clique direito do mouse no aplicativo PHP e selecione Editar ... .
Etapa 5) Verifique os tempos limite (mostrados abaixo).
No meu caso, os tempos limite padrão aqui eram 70 e 90 segundos; o primeiro estava causando um 500 Erro Interno do Servidor em scripts PHP que demoravam mais de 70 segundos.
Eu sei que você está perguntando especificamente sobre o tempo limite do PHP, mas o que ninguém mais parece ter mencionado é que também pode haver um tempo limite no servidor da Web e pode ser muito semelhante ao tempo limite do PHP.
Então, se você tentou:
E você verificou com a função phpinfo () que max_execution_time foi realmente aumentado, então você pode querer tentar adicionar isso a .htaccess para garantir que o Apache não expire:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Mais informações aqui: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
Primeiro verifique o php.ini
caminho do arquivo phpinfo()
; e, em seguida, alterou os PHP.INI
parâmetros:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
Apache reiniciado
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Nota : você também pode usar o comando para localizar php.ini
no Linux
locate `php.ini`
Se você não pode editar o php.ini (em seu servidor, por exemplo), você pode tentar alterar os parâmetros do php.ini de dentro do seu código php. Experimentar:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Se isso não funcionar, tente definir 'set_time_limit' da mesma forma, além disso, eu diria que sua única opção é entrar em contato com seu host. Essas configurações não podem ser modificadas no modo de segurança.
Teste se você está no modo de segurança - se não estiver - defina o limite de tempo (valor local) para o que você deseja:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* Você não pode definir o limite de tempo desta forma se o modo de segurança estiver ativado.
opcional: se você definir a configuração sobre php.ini, mas ainda não conseguir fazer upload
- esta é uma função php para verificar o código de erro
$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;
}
Você também pode definir um tempo máximo de execução em seu .htaccess
arquivo:
php_value max_execution_time 180
Para realmente aumentar o limite de tempo, prefiro primeiro obter o valor atual. set_time_limit
nem sempre aumenta o limite de tempo. Se o valor atual (por exemplo, de php.ini
ou anteriormente definido) for maior do que o valor usado na chamada atual de set_time_limit
, ele diminuirá o limite de tempo!
Então, o que há com um pequeno ajudante como este?
/**
* @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);
Veja também: Obtenha max_execution_time no script PHP