Me preguntaba si alguien por ahí sabía cómo se podía hacer esto en PHP. Estoy ejecutando un script que implica abrir un archivo, tomar las primeras 1000 líneas, hacer algunas cosas con esas líneas, luego el archivo php abre otra instancia de sí mismo para tomar las siguientes mil líneas y así sucesivamente hasta que llegue al final del archivo . Estoy usando splfileobject para poder buscar una cierta línea, lo que me permite dividirla en mil pedazos de línea bastante bien. El mayor problema que estoy teniendo es con el rendimiento. Estoy lidiando con archivos que tienen más de 10 000 000 de líneas y, si bien las primeras 10 000 líneas son bastante rápidas, hay una gran ralentización exponencial después de ese punto que creo que es solo tener que buscar ese punto.Eliminar las primeras líneas X de un archivo PHP
Lo que me gustaría hacer es leer las primeras mil líneas, luego simplemente eliminarlas del archivo para que mi script siempre lea las primeras mil líneas. ¿Hay alguna manera de hacer esto sin leer el resto del archivo en la memoria? Otras soluciones que he visto implican leer cada línea en una matriz y luego deshacerse de las primeras X entradas, pero con diez millones de líneas que consumirán demasiada memoria y tiempo.
Si alguien tiene una solución u otras sugerencias que podrían acelerar el rendimiento, sería muy apreciado.
¿* piensas * que el tiempo se toma buscando? – salathe
Comenté la línea que itera el contador de línea para que siempre ejecute los primeros 1000 y se ejecutó exponencialmente más rápido.Además, esto se vuelve exponencialmente más lento a medida que avanza, lo único que cambia es la línea que busca. –
La búsqueda no debería tomar * exponencialmente * más tiempo. ¿En qué tipo de escala está la ralentización? – salathe