viernes, 21 de febrero de 2014

La solución elegante

Tras la entrada anterior, probaré la solución elegante, uploadify. El motivo es que tiene una manera secuencial de subir archivos, evitando bloqueos en el servidor. La semana que viene adaptaré su código al mío.

jueves, 20 de febrero de 2014

Revelaciones

Para el proyecto bíblico Revelaciones vamos a centrarnos inicialmente en modificar las restricciones de subida de archivos intrínsecas al servidor PHP.

La documentación nos la encontramos en http://php.net/manual/es/ini.core.php#ini.sect.file-uploads:

Opciones de configuración de subida de ficheros
NombrePor defectoCambiable
file_uploads"1"PHP_INI_SYSTEM
upload_tmp_dirNULLPHP_INI_SYSTEM
max_input_nesting_level64PHP_INI_PERDIR
max_input_vars1000PHP_INI_PERDIR
upload_max_filesize"2M"PHP_INI_PERDIR
max_file_uploads20PHP_INI_SYSTEM
He aquí una breve explicación de las directivas de configuración.
file_uploads boolean
Si permitir o no la subida de ficheros mediante HTTP. Véanse también las directivas upload_max_filesize, upload_tmp_dir, y post_max_size.
upload_tmp_dir string
El directorio temporal usado para almacenar ficheros durante el proceso de subida. Es necesario tener permisos de escritura para el usuario que está ejecutando PHP. Si no está especificado, PHP usará el predeterminado del sistema.
Si el directorio especificado no tiene permisos de escritura, PHP recurrirá al directorio temporal predeterminado del sistema. Si la directiva open_basedir está activada, al directorio predeterminado del sistema se le ha de permitir la subida de ficheros para que funcione.
upload_max_filesize integer
El tamaño máximo de un fichero subido.
Cuando se usa un integer, el valor del mismo es medido en bytes. También se puede usar la notación reducida, tal como se describe en esta FAQ.
max_file_uploads integer
El número máximo de ficheros a subir permitidos de forma simultánea. A partir de PHP 5.3.4, los campos de subida de ficheros dejados en blanco en el momento del envío no cuentan en este límite.
También hay que modificar la directiva max_post_size, pues ésta limita el tamaño total de archivos de subida. max_post_size debe ser mayor o igual que upload_max_filesize, y memory_limit debe ser mayor o igual que max_post_size.

La directivas ini_get('upload_max_filesize') e ini_get('max_file_uploads') dan los valores por defecto, 2M y 20, así pues hemos de modificar estos parámetros, y solo se puede hacer desde el php.ini. Seguimos los pasos de http://bajolinux.com/upload_max_filesize-php-modificar-el-tamano-maximo-subida-archivo/, pero teniendo en cuenta que en el mac php.ini se debería encontrar en /private/etc/php.ini, y si no, copiamos php.ini.default en esa ubicación (stackoverflow.com):

sudo cp /private/etc/php.ini.default /private/etc/php.ini

Modificamos los parámetros y reiniciamos apache (cyberciti.biz):

sudo apachectl -k restart

Y ahora ya aparecen los valores correctos:

upload_max_filesize: 10M
max_file_uploads: 30

lunes, 17 de febrero de 2014

Mes dos

El sábado descubrí que la máquina había rebasado la capacidad de almacenaje, lo cual iba a ocurrir tarde o temprano, pero ha sucedido demasiado temprano. He tenido que hacer cálculos y previsiones, qué tedioso.

Haciendo un prorrateo sería necesario medio millón de años para terminar la producción, y no exagero. Es necesario tener otro enfoque: cambiar la tecnología y hacer un sistema totalmente no supervisado.

Lo primero es pasar el código JS a Java, una locura. Se pierde tiempo, pero gano en un programa mejor estructurado y, espero, más rápido. Mi pésima memoria ha de recordar la declaración de arrays y el System.arraycopy para clonarlos, la de cosas que se pueden olvidar.

Luego está la fabricación de workers y su ejecutor.

Hoy hemos retrocedido dos pasos para coger impulso mañana.