Skok do konkretnej lini w pliku tekstowym

0

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

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()?

1 użytkowników online, w tym zalogowanych: 0, gości: 1