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:

  1. Panel de control > Sistema > Terminal y SNMP > Habilitar servicio SSH (puerto 22) > Aplicar.
  2. 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:

I changed the following entrys in my PHP.ini as follows (on Debian it's located in /etc/php/apache2/php.ini)

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).

max_execution_time and max_input_time

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.

Solucionado 2014-Marzo-19 a las 00:10 Si se actualiza PHP hay que acordarse de hacer este cambio para no tener problemas en moodle.

  • doc/tec/net/srv_web/nginx/moodle/limite_grandes.txt
  • Última modificación: 2024/05/15 20:10
  • por fepg