Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> efektywne czytanie z pliku
Rzepa
post 12.02.2004, 08:58:10
Post #1





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


Witam,

Potrzebna mi efektywna (czasowo) metoda na pobieranie x ostatnich linii z pliku. Do tej pory stosowałem funkcję file(), ale moje pliki wciąż rosną i obawiam się, że wczytywanie całości do tablicy za jakiś czas stanie się zbyt powolne...

Pozdrawiam,
:wink:
Rzepa.
Go to the top of the page
+Quote Post
zulus
post 12.02.2004, 09:45:39
Post #2





Grupa: Zarejestrowani
Postów: 225
Pomógł: 18
Dołączył: 30.06.2003
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


też się nad tym zastanawiam i doszedłem do wiosku, że jak będę wiedział które chcę linijki, to przesunę wskażnik na sam koniec pliku i zacznę czytać od końca.


--------------------
Go to the top of the page
+Quote Post
Rzepa
post 12.02.2004, 13:28:44
Post #3





Grupa: Zarejestrowani
Postów: 25
Pomógł: 0
Dołączył: 13.01.2004

Ostrzeżenie: (0%)
-----


tak, tak, tylko mi chodzi o efektywny sposób wybierania linii z pliku.
np. żeby skoczyć na koniec można użyć fseek(), aby wczytać jedną linię - fgets(), a jak sprytnie skoczyć np. 5 linii do tyłu?
:?:
pozdr.

Rzepa.
Go to the top of the page
+Quote Post
delerium
post 12.02.2004, 15:36:02
Post #4





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 12.02.2004

Ostrzeżenie: (0%)
-----


mysle ze najbardziej efektywnym sposobem jest prowadzenie drugiego pliku w ktorym zapisujesz pozycje w pliku kolenych linii. dzieki temu w latwy sposb mozna odczytac polozenie lini w pliku.

jedyna wada tego rozwiazania to jesli ilosc lini wzrosnie do powiedzmy 50 000 to praswoanie pliku z indexami moze zjac chiwle... no coz w C mozna bybylo zrzucic fizycznie zawartosc tablicy do pliku i tylko ja spowrotem wrzucac.. nie wiem czy w php takie cos przejdzie..
Go to the top of the page
+Quote Post
Jabol
post 12.02.2004, 16:22:06
Post #5





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


skocz fseekiem na przedostatni, a potem czytaj pięć kolejnych linijek (przesuwając deskryptor do tyłu cały czas o 2 od aktualnej pozycji i czytając jeden znak).
Potem jak już znajdziesz piątą linijke zacznij czytać. A czemu to jest wydajne (conajmniej na unixach)? Ponieważ biblioteka standardowa tak naprawde i tak czyta najpierw plik do bufora, a potem wszystkie operacje wykonują się na pamięci a nie na dysku.
Inne co Ci moge zaproponować to możesz jeszcze spróbować zmienić układ pliku na odwrotny (tzn. to co byłoby ostanie będzie pierwsze). Tak chyba byłoby łatwiej?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.06.2025 - 06:38