Ver Mensaje Individual
  #3 (permalink)  
Antiguo 01/03/2016, 12:40
jhonjaider1000
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años, 11 meses
Puntos: 11
Respuesta: Duda con los uploads en PHP

Hola realmente la técnica que quieres usar si tiene un pequeño problema, y lo digo por experiencia propia...

Generalmente para esto es claro que vas a usar un bucle, por tanto el bucle correrá el array de Input Files que existan en el Dom del formulario.

El problema es claro, El servidor recibirá peticiones AJAX en cuestión de milisegundos, es posible que te logre responder, pero por lo regular algunos servidores y hoy en día incluso Google Chrome bloquea peticiones que superen cierta cantidad en cuestión de segundos, esto solo lo hacen por seguridad, pues generalmente este tipo de peticiones son de tipo malware y/o ataques a los sitios.

Cuando te dije, que por experiencia tuve problemas al realizar la tarea que necesitaba con la técnica que deseas usar, el problema que tuve fue que no todos los archivos subían, pues en algunas respuestas AJAX me generaba un error 500 (Internal Server ERROR) por tanto mi solución para no perder el trabajo que ya había realizado, fue poner un setTimeout() de JavaScript, solo así lograrás hacer que tu sistema no haga pensar ni al navegador o tu servidor que eres un bot, malware o posible ataque, o en los peores casos saturar tu servidor.

A continuación te comparto un ejemplo de la solución alterna para que no pierdas el trabajo que ya tienes, generalmente es un for con la supuesta lista de Input Files del formulario, y luego al iterar envió peticiones AJAX con un tiempo totalmente diferente de ejecución al multiplicar el tiempo entre peticiones por la posición actual del array que se esté recorriendo, así todas se ejecutarán una detrás de la otra... los 200 milisegundos que puse no lo cambies, déjalo tal cual, con solo ese pequeño espacio de tiempo bastará para darle un respiro al sistema que estás implementando...

Código Javascript:
Ver original
  1. var inputFiles = ["file1","file2","file3"];
  2. var time = 200;
  3.  
  4. for(var i = 0; i < inputFiles.length; i++){
  5.   setTimeout(function(){console.info('Se ejecuta tarea, en tu caso la petición AJAX de cada iteracción')},(time*i));  
  6. }

Cualquier duda no olvides pregunar, Éxitos! :D