Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/04/2018, 07:25
Avatar de SirZoX
SirZoX
 
Fecha de Ingreso: mayo-2006
Ubicación: Valencia
Mensajes: 124
Antigüedad: 17 años, 11 meses
Puntos: 2
gestor de copiado de ficheros

Buenas a todos.

Estoy desarrollando una pequeña aplicación en php para copiar y mover ficheros entre ftp y carpetas locales, cuando se me ha planteado cierto problema.

Este script estaba pensado y desarrollado para mover ficheros pequeños, de 40 o 50 megas aprox como mucho pero con el paso del tiempo el tamaño de los ficheros, así como su cantidad han ido creciendo hasta la necesidad de mover a veces 80 o 100 ficheros, a veces sumando incluso más de 10 gb. Obviamente esto no es nada optimizado en php puesto que el timeout, aunque ya lo modifiqué para darle un tiempo de 600 segundos, siempre acaba cumpliéndose y el script se queda a medio ejecutar.

Entonces pensé en hacer algún tipo de "controlador" para que lance las peticiones de mover ficheros usando JS o Jquery (Ajax imagino), de modo que lance la petición de mover el fichero hasta un máximo de 3 ficheros por ejemplo, y que cuando acabe uno de ellos, siga con el cuarto.. y así hasta el final.

Imagino que de este modo solucionaría muchos problemas ya que el timeout ya no sería problemático, la paciencia del usuario tampoco puesto que con JS o Jquery iría pintando en pantalla un progreso fichero a fichero (algo tipo... descargando.... FINALIZADO" y evitaría pulsar F5 o salirse porque el script tarda mucho.

El problema, es que no tengo ni idea de por dónde empezar. El script php está hecho y funciona, no sé si os haría falta el código pero lo dudo, ya que únicamente necesito algo tipo esto:

Código:
  $('#btnMove').click(function() {
    
    //generar array con la lista de ficheros del textarea

    //contar número de ficheros en descarga actual

    //si nficheros en descarga es < 3

      //lanzar descarga del fichero[n+1]

    //si fichero[n] == totalFicheros

      //mensaje de finalización e informe de ficheros totales, tiempo total empleado, etc...
  });
Aparte de estas instrucciones básicas, por el camino hay más cosas que controlaría o que "pintaria" en pantalla para disuadir al usuario inexperto (impaciente) de que refresque la página, o desactivaría el botón de inicio de script... cosas así, pero en eso ya me buscaré la vida más adelante.