Autor
|
Tema: Leer archivo grande y manipularlo (Leído 2,026 veces)
|
chucky2183
Desconectado
Mensajes: 2
|
Hola. Tengo un archivo de texto grande de 100mb. El archivo posee 1600000 lineas, en cada linea hay un proveedor con sus porcentajes de impuestos. Necesito manipular 1600 proveedores que tengo en la DB y actualizar sus impuestos. Es decir los 1600 proveedores de la DB los tiene que comparar 1 a 1 con cada linea del archivo.
Intento solo leer el archivo e imprimirlos y se me muere el programa. Llega a procesar unos 7 minutos y medio y tira un error 500. Pero en el log de apache no aparece el error.
Hay alguna forma de leer el archivo por partes? Ya le subi los tiempos en los archivos de configuracion pero aun asi el programa muere.
|
|
|
En línea
|
|
|
|
engel lex
|
usas fopen y con fread no lees todo sino solo una sección de X bytes por vez... así no sobrecargas el proceso
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
_Zume
Desconectado
Mensajes: 21
|
Yo que tú paso todos los datos a una tabla y comienzo a compararlos desde MySQL, así tienes más libertad para tratarlos además y podrías utilizar el sscanf para filtrar los datos.
Aunque para serte sincero no entendí bien, tienes 1600000 lineas, y necesitas manipular solo 1600 ?
_____________
Por cierto, yo hace meses quería sacar un montón de imágenes de una web (casi 10.000, y estaban ordenadas por números 1.jpg, 2.jpg, etc ..) y hice un código para copiar todas las imágenes a un directorio pero tuve problema de sobre-carga, así que lo que hice fue pasarlo a un img lleno de todas las URL que habían con un bucle, y también tuve el problema, así que añadí un sleep(0.25); y lo logró, no sé si funcione.
|
|
« Última modificación: 19 Diciembre 2015, 08:15 am por _Zume »
|
En línea
|
|
|
|
chucky2183
Desconectado
Mensajes: 2
|
Yo que tú paso todos los datos a una tabla y comienzo a compararlos desde MySQL, así tienes más libertad para tratarlos además y podrías utilizar el sscanf para filtrar los datos. Seria lo ideal. Pero al leer el archivo se muere. Si intento insertar 1600000 tuplas en la DB, va a ser peor.Aunque para serte sincero no entendí bien, tienes 1600000 lineas, y necesitas manipular solo 1600 ? El funcionamiento es asi. Tengo 1600 proveedores cargados en la base de datos, y cada mes bajo un archivo de retenciones de la AFIP (Administracion Federal de Ingresos Publicos). El archivo que bajo pesa unos 100Mb y posee aproximadamente 1600000 lineas. En cada linea hay un proveedor (CUIT, % de RETENCION, y otros datos mas). Tengo que actualizar el % de retencion en los 1600 proveedores que tengo en la base de datos. Cada 1 de los 1600 proveedores los tengo que comparar con el archivo. _____________ Por cierto, yo hace meses quería sacar un montón de imágenes de una web (casi 10.000, y estaban ordenadas por números 1.jpg, 2.jpg, etc ..) y hice un código para copiar todas las imágenes a un directorio pero tuve problema de sobre-carga, así que lo que hice fue pasarlo a un img lleno de todas las URL que habían con un bucle, y también tuve el problema, así que añadí un sleep(0.25); y lo logró, no sé si funcione.
|
|
« Última modificación: 21 Diciembre 2015, 13:32 pm por chucky2183 »
|
En línea
|
|
|
|
#!drvy
|
Usa fgets o la clase SplFileObject (POO). Así cargaras el archivo linea por linea sin cargarlo totalmente en memoria. Por otra parte imprimir las lineas no es precisamente un trabajo fácil y consume memoria. Asegúrate de hacerlo de la forma mas optimizada posible. $file = new SplFileObject('archivo.txt'); while(!$file->eof()){ $linea = $file->fgets(); } $file = null;
Saludos
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
No me graba porque dice que el archivo es más grande de lo que es
Software
|
apatxe
|
2
|
2,183
|
16 Marzo 2004, 21:50 pm
por Songoku
|
|
|
Leer código de un proyecto grande.
Programación General
|
16BITBoy
|
1
|
2,227
|
29 Octubre 2010, 21:40 pm
por Debci
|
|
|
Subir un archivo GRANDE mediante POST por URL.
Java
|
Proteus1989
|
0
|
2,179
|
6 Junio 2012, 17:35 pm
por Proteus1989
|
|
|
Leer archivo grande en linux
Scripting
|
ceibe
|
3
|
2,917
|
20 Septiembre 2016, 23:04 pm
por MCKSys Argentina
|
|
|
Leer un numero muy grande
Programación C/C++
|
mendez1415
|
1
|
2,030
|
26 Noviembre 2016, 18:07 pm
por engel lex
|
|