Moodle: Límite subida ficheros grandes
2014-Marzo-18, por la mañana en ITC1_EQUI. Problema: Los alumnos se quejan de que les cuesta mucho subir ficheros grandes del orden de varios MB. Muchas veces se queda como parado. Es cierto. Ya lo había notado el lunes en STI1A_SIRL.
Busco información acerca del límite del tamaño de los archivos a subir y en moodle dice:
Esta opción especifica el tamaño máximo que deben tener los archivos subidos al sitio. Está limitada por los ajustes post_max_size y upload_max_size de PHP y por el ajuste LimitRequestBody de Apache. A su vez, la opción limita el rango de tamaños que pueden elegirse en el nivel de curso o de módulo. Si se elige la opción 'Límite de Servidor' se usará el máximo permitido por el servidor.
En UPC habilito SSH:
- Panel de control > Sistema > Terminal y SNMP > Habilitar servicio SSH (puerto 22) > Aplicar.
- Cierro sesión.
Entro por SSH como root/mia2(la del admin). Uso Putty (SSH, puerto 22).
cd / find -name php.ini
me sale esta ruta:
./etc/php/php.ini
voy ahí y hago
cat php.ini
y localizo
... post_max_size = 32M ... upload_max_filesize = 32M max_file_uploads = 20 ...
Luego PHP tiene límite de 32 Mb para el tamaño del fichero. Y no debería estar dando problemas.
Pero cuando quiera recuperar un backup de un curso, éste va a ser mayor que esta cantidad por lo que voy a aumentarla a 256M.
Tengo que mirar Apache…
./etc/httpd/conf/httpd.conf
voy ahí y hago
cat httpd.conf
pero no tiene el parámetro LimitRequestBody (lo cual quiere decir que no tiene límite, ya me lo olía porque el PXE transfiere por http isos enormes sin problema), por lo que vuelvo al php.ini… Busco en foros y encuentro:
Code: Select all
max_execution_time = 3600 max_input_time = 3600 memory_limit = 512M post_max_size = 2000M upload_max_filesize = 2000M max_file_uploads = 20
- max_execution_time and max_input_time sets the maximum time (in seconds) a php-process may live. - memory_limit sets the maximum amount of memory a process may use. - post_max_size and upload_max_filesize sets the max-filesize you can upload. (max_filesize is for one file, post_max may consist of several files) Note: with 32Bit PHP only files <2GB are possible (silly php uses signed INT for filesize) - max_file_uploads is the maximum number ob parallel file uploads
En vista de esto creo que el problema está en lo que tarda la carga de un fichero grande, pues tengo actualmente un límite de:
... max_execution_time = 240 max_input_time = 60 memory_limit = 128M ...
es decir un tiempo de entrada de 1 minuto. Si el servidor tiene mas tráfico seguro que corta esta transferencia. Voy a poner 3600 (60 minutos) en los tiempos, para ello copio el php.ini a /volume1/job, lo edito con notepad y lo vuelvo a copiar a su sitio… (Hago esto por si me equivoco y lo borro sin querer).
cp /etc/php/php.ini /volume1/job vi /volume1/job/php.ini
para modificar algo se pulsa primero: 'a' minúscula
para salir grabando se pulsa: tecla Esc y luego ':wq'
cp /volume1/job/php.ini /etc/php/php.ini
hago un cat para comprobar su contenido: OK.
Dentro de moodle, como administrador, observo la información de PHP en: Administracion del sitio > Servidor > Información PHP
y ahí me fijo en los tiempos, que aún están con los valores viejos.
Reinicio UPC…
Se cambia: OK.
Ahora hay que probar a subir un fichero de unos 6M a ver si lo hace… Pruebo con un fichero de unos 5,7 MB y tarda 2 minutos y 15 segundos (Desde mi casa a través de internet y regresando)…Funciona!!!.
La cuestión era entonces el tiempo máximo asignado a la operación. Por esa misma regla de tres es de suponer que el tamaño máximo (32MB) tarde casi unos 15 minutos, con lo que valdría un tiempo de 15*60=900, pero mas vale asegurarse y dejo los 3600 (1 hora).
These settings define the maximum lifetime of the script and the time that the script should spend in accepting input. If several megabytes of data are being transfered max_input_time should be reasonably high. You can override the setting in the ini file for max_input_time by calling the set_time_limit() function in your scripts.