Foros del Web » Programando para Internet » PHP »

Procesar CSV muy largo sin error por tiempo o memoria

Estas en el tema de Procesar CSV muy largo sin error por tiempo o memoria en el foro de PHP en Foros del Web. He estado buscando sin mucha suerte, como procesar un archivo CSV o TXT con mas de 20,000 lineas que se tienen que guardar en una ...
  #1 (permalink)  
Antiguo 09/06/2015, 17:23
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Procesar CSV muy largo sin error por tiempo o memoria

He estado buscando sin mucha suerte, como procesar un archivo CSV o TXT con mas de 20,000 lineas que se tienen que guardar en una base de datos, pero termina cortándose por limite de tiempo.

Alguien sabrá como procesarlo por lotes y que no se considere como una sola tarea? por que me imagino que el limite de tiempo lo alcanzo por ejecutarlo y procesarlo en un solo paso.
  #2 (permalink)  
Antiguo 09/06/2015, 17:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Procesar CSV muy largo sin error por tiempo o memoria

Cita:
pero termina cortándose por limite de tiempo.
¿Lo estás ejecutando a través del servidor web?

Ese creo que sería tu principal error: php no debe usarse para procesos largos, y menos si se deben disparar desde la web.

Debes usar un proceso en el fondo del sistema, pues a dicho proceso le es irrelevante el timeout dado que dicha limitante existe sólo en el contexto web.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 09/06/2015, 18:20
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 10 años, 11 meses
Puntos: 10
Respuesta: Procesar CSV muy largo sin error por tiempo o memoria

Bueno aunque creo que pateketrueke tiene razon ... para poder continuar con tu trabajo hay estas dos maneras

Para lo del tiempo tienes:
Código PHP:
Ver original
  1. set_time_limit(600); //600 segundos por ejemplo (10 minutos)

y para la memoria:
Código PHP:
Ver original
  1. ini_set('memory_limit', '512M');

pero solo si no tienes el PHP en "safe mode"
  #4 (permalink)  
Antiguo 10/06/2015, 09:37
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 1 mes
Puntos: 1146
Respuesta: Procesar CSV muy largo sin error por tiempo o memoria

Así es pateketrueke, se ejecuta desde el navegador ya que es un archivo que carga el cliente en su sitio, aunque mirare la posibilidad de crear un cron job... pero de momento es una tarea que se debe ejecutar desde el navegador.

Creo que intentare dividirlo y guardarlo en fragmentos en lugar de procesarlo, para iniciar llamadas mediante ajax.

matake ya he probado esa opción y no se ha resuelto el problema...

Etiquetas: csv, largo, memoria, procesar, tiempo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:23.