¿Cómo aumentar el tiempo de espera de las transacciones? Quiero subir videos, pero ¿videos de gran tamaño no cargados?
Arroja error The process *** exceeded the timeout of 60 seconds.
¿Cómo aumentar el tiempo de espera de las transacciones? Quiero subir videos, pero ¿videos de gran tamaño no cargados?
Arroja error The process *** exceeded the timeout of 60 seconds.
Respuestas:
Necesita cambiar alguna configuración en su 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
La ubicación de su PHP.ini depende de su entorno, más información: http://php.net/manual/en/ini.list.php
También debería poder hacerlo durante el tiempo de ejecución usando
set_time_limit(100);
http://php.net/manual/en/function.set-time-limit.php
o en su vhost-config
php_admin_value max_execution_time 10000
Tener un límite de tiempo de ejecución global BAJO es principalmente una buena idea por razones de rendimiento en aplicaciones no tan confiables. Por lo tanto, es posible que desee permitir que solo esos scripts se ejecuten durante más tiempo del absolutamente necesario.
ps: no te olvides de post_max_size y upload_max_filesize (como ya se dijo en la primera respuesta)
Para completar la respuesta de Hannes.
Necesita cambiar alguna configuración en su php.ini:
upload_max_filesize = 2M
;or whatever size you want
max_execution_time = 60
; also, higher if you must
Si alguien quiere poner un número ilimitado (no sé por qué, pero si lo desea), puede establecer el tiempo en 0:
Necesita cambiar alguna configuración en su php.ini:
upload_max_filesize = 0
max_execution_time = 0
Y si no sabe dónde está su archivo php.ini. Puedes hacer un archivo "name.php" en tu servidor y poner:
<?php phpinfo(); ?>
Y en su sitio web, puede ver la configuración de su php.ini y está marcado donde está.
Si no puede acceder a su php.ini, tiene dos opciones más.
Puede establecer esta línea directamente en su archivo "name.php" pero no encuentro upload_max_filesize para esta opción:
set_time_limit(0);
O en ".htaccess"
php_value upload_max_filesize 0
php_value max_execution_time 0
Si lo que necesita hacer es específico solo para 1 o 2 páginas, sugiero usar set_time_limit para que no afecte a toda la aplicación.
set_time_limit(some_values);
pero, por supuesto, estos 2 valores (post_max_size y upload_max_filesize) están sujetos a investigación.
puede configurarlo a través de la función ini_set
ini_set('post_max_size','20M');
ini_set('upload_max_filesize','2M');
o directamente en el archivo php.ini como la respuesta anterior de Hannes, o incluso configúrelo en .htaccess como a continuación
php_value upload_max_filesize 2M
php_value post_max_size 20M
Además de las respuestas anteriores, puede usar la set_time_limit()función:
http://php.net/manual/en/function.set-time-limit.php
pasar 0como argumento hará que su script se ejecute sin límite de tiempo.
Si está utilizando el servidor IIS de Microsoft , además de php.ini configuración mencionada por otros, es posible que deba aumentar la configuración del tiempo de espera de ejecución para la aplicación PHP FastCGI en el Administrador del servidor IIS:
Paso 1) Abra el Administrador del servidor IIS (generalmente bajo Administrador del servidor en el menú Inicio, luego Herramientas / Administrador de servicios de información de Internet (IIS) ).
Paso 2) Haga clic en la conexión principal (no específica de ningún dominio en particular).
Paso 3) En la sección IIS , busque Configuración de FastCGI (que se muestra a continuación).
Paso 4) en la misma, haga clic en la aplicación PHP y seleccione Editar ... .
Paso 5) Verifique los tiempos de espera (que se muestran a continuación).
En mi caso, los tiempos de espera predeterminados aquí fueron de 70 y 90 segundos; el primero de los cuales estaba causando un error interno del servidor 500 en los scripts PHP que demoraron más de 70 segundos.
Sé que está preguntando específicamente sobre el tiempo de espera de PHP, pero lo que nadie más parece haber mencionado es que también puede haber un tiempo de espera en el servidor web y puede verse muy similar al tiempo de espera de PHP.
Entonces, si lo ha intentado:
Y ha comprobado con la función phpinfo () que max_execution_time se ha incrementado, entonces es posible que desee intentar agregar esto a .htaccess, lo que se asegurará de que Apache no se agote el tiempo de espera:
RewriteRule .* - [E=noabort:1]
RewriteRule .* - [E=noconntimeout:1]
Más información aquí: https://www.antropy.co.uk/blog/php-script-keeps-timing-out-despite-ini-set/
Primero verifique la php.iniruta del archivo por phpinfo(); y luego cambió los PHP.INIparámetros:
upload_max_filesize = 1000M
memory_limit = 1500M
post_max_size = 1500M
max_execution_time = 30
reiniciado Apache
set_time_limit(0); // safe_mode is off
ini_set('max_execution_time', 500); //500 seconds
Nota : también puede usar el comando para buscar php.inien Linux
locate `php.ini`
Si no puede editar php.ini (en su servidor, por ejemplo), puede intentar cambiar los parámetros de php.ini desde su código php. Tratar:
ini_set('max_execution_time', 'NUMBER OF SECONDS TO ALLOW BEFORE TIMEOUT');
Si eso no funciona, intente también configurar 'set_time_limit' de la misma manera, más allá de eso, diría que su única opción es contactar a su anfitrión. Esta configuración no se puede modificar en modo seguro.
Pruebe si está en modo seguro; de lo contrario, establezca el límite de tiempo (valor local) a lo que desea:
if(!ini_get('safe_mode')){
echo "safe mode off";
set_time_limit(180);// seconds
phpinfo();// see 'max_execution_time'
}
* No puede establecer un límite de tiempo de esta manera si el modo seguro está activado.
opcional: si configuras config sobre php.ini pero aún no puedes cargar
-esta es la función php para verificar el código de error
$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;
}
Para aumentar realmente el límite de tiempo, prefiero obtener primero el valor actual. set_time_limitno siempre aumenta el límite de tiempo. Si el valor actual (p. Ej., De php.inio establecido anteriormente) es mayor que el valor utilizado en la llamada actual de set_time_limit, disminuirá el límite de tiempo!
Entonces, ¿qué pasa con un pequeño ayudante 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);
Ver también: Obtener max_execution_time en un script PHP