Witam, czy istnieje gotowa funkcja pozwalająca mi na skok do konkretnej lini w otwartym pliku textowym za pomocą fopen() ?
Plik tekstowy składa się z prawie 3 milionów lini i szukanie linia po lini jest dość czasochłonne a w niektórych przypadkach wiem gdzie wskaźnik mógłby skoczyć aby zaoszczędzić czas.
0
0
Nie ma niczego magicznego. Plik tekstowy to ciąg bajtów, a przejście do nowej linii to tylko konkretna kombinacja tych bajtów.
W celu przyśpieszenia wyszukiwania konkretnych linii możesz stworzyć indeks. W najprostszym przypadku będzie to zwykła tablica, której elementami będą kolejne pozycje nowych wierszy.
0
bez indeksu ciężko będzie uzyskać coś szybszego:
<?php
$h = fopen("plik.txt", "r");
$line = 1000000;
for($i=1; $i<$line; ++$i) {
fgets($h, 4096);
}
$output = fgets($h, 4096);
echo $output;
fclose($h);
?>
w przypadku gdy z pliku już było coś odczytywane to trzeba przewinąć go do początku najpierw...
jeżeli często skaczesz po liniach w różnym miejscu w pliku możesz spróbować tego: http://ideone.com/kK4Qu (generuje indeks dynamicznie)
0
nie lepiej po prostu użyć funkcji file()
?