PHP usando fgetcsv en un enorme archivo csv
Utilizandofgetcsv
, puedo de alguna manera hacerun destructivo leer dónde se descartarían las filas que he leído y procesado, por lo que si no logro completar todo el archivo en la primera pasada, puedo regresar y continuar donde lo dejé antesthe script timed out
?
Detalles adicionales:
Recibo un feed de productos diario de un proveedor que aparece como un archivo .gz de 200 mb. Cuando descomprimo el archivo, se convierte en un .csv de 1.5 gb con casi 500,000 filas y 20 a 25 campos. Necesito leer esta información en una base de datos MySQL, idealmente con PHP para poder programar un CRON para ejecutar el script en mi proveedor de alojamiento web todos los días.
Tengo un tiempo de espera difícil en el servidor establecido en 180 segundos por el proveedor de alojamiento y un límite máximo de utilización de memoria de 128 mb para cualquier script individual. Estos límites no pueden ser cambiados por mí.
Mi idea fue obtener la información del archivo .csv con la función fgetcsv, pero espero tener que realizar varias pasadas en el archivo debido al tiempo de espera de 3 minutos, estaba pensando que sería bueno reducir el archivo. a medida que lo proceso para que no tenga que pasar ciclos saltando filas que ya se procesaron en un pase anterior.