¿Cambia el contenido del archivo? Si es estático o relativamente estático, puede crear una lista de compensaciones donde quiera leer sus datos. Por ejemplo, si el archivo cambia una vez al año, pero lo leen cientos de veces al día, a continuación, se puede pre-calcular las compensaciones de las líneas que desea y saltar directamente a ellos de esta manera:
$offsets = array();
while ($line = fread($filehandle)) { .... find line 10 .... }
$offsets[10] = ftell($filehandle); // store line 10's location
.... find next line
$offsets[20] = ftell($filehandle);
y pronto. Después, puede saltar trivialmente a la ubicación de esa línea como esta:
$fh = fopen('file.txt', 'rb');
fseek($fh, $offsets[20]); // jump to line 20
pero esto podría ser un exceso en su totalidad.Intente comparar las operaciones: compare el tiempo que lleva realizar una "lectura de 20 líneas" anticuada versus precomputar/saltar.
Por favor comente en el Votación – Yacoby
Esa base de datos será más rápida es subjetiva. Si la información a la que está intentando acceder está en el comienzo del archivo, será mucho más rápida. La lectura desde una base de datos todavía está leyendo desde un archivo. Mejorará el índice de la base de datos solo si está buscando algo que esté lejos del comienzo de su archivo. También depende de lo que intenta lograr exactamente. –
Nunca dijo que la base de datos sería más rápida. Solo que sería mejor. La preocupación del PO podría verse como un problema de memoria más que de velocidad. – webbiedave