Czy zmienia się zawartość pliku? Jeśli jest statyczny lub stosunkowo statyczny, możesz utworzyć listę przesunięć, w których chcesz odczytać dane. Na przykład, jeżeli zmiany plik raz w roku, ale trzeba ją przeczytać setki razy dziennie, to można wstępnie obliczyć przesunięcia linii chcesz i przejść bezpośrednio do nich tak:
$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);
i wkrótce. Następnie możesz trywialnie przeskoczyć do lokalizacji tej linii:
$fh = fopen('file.txt', 'rb');
fseek($fh, $offsets[20]); // jump to line 20
Ale to może być całkowita przesada.Spróbuj przetestować operacje - porównaj czas potrzebny na wykonanie staroświeckiego "odczytu 20 linii" w porównaniu z prekompute/jump.
Proszę skomentować downwardem – Yacoby
Baza będzie szybsza, subiektywna. Jeśli informacje, do których próbuje uzyskać dostęp znajdują się na początku pliku, będzie o wiele szybciej. Czytanie z bazy danych wciąż czyta z pliku. Poprawi on indeks bazy danych tylko wtedy, gdy szuka czegoś od początku jego pliku. Zależy to również od tego, co dokładnie próbuje osiągnąć. –
Nigdy nie powiedział, że baza danych będzie szybsza. Tyle tylko, że byłoby lepiej. Obawy PO można postrzegać raczej jako kwestię pamięci niż prędkości. – webbiedave