Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyciaganie n lini z pliku
Forum PHP.pl > Forum > Przedszkole
dem
Jestem w trakcie pisania downloadu opartego na pliach. Kazda kategoria ma swoj plik a w nim kazda linia ma odpowiednie informacje o pliku (url, nazwa,opis, itd). Mój problem nad którym myśle juz od dawna polega na tym jak stworzyć podział na strony oparty na ilosci wyciagnietych lini z pliku. Jak zrobić aby skrypt wyciąnął pierwsze n lini i zrobił podział na strony z taką samą ilością informacji opartych na kolejnych n lini? jeśli ktoś nie jest wstanie dać mi gotowca(a zauważyłem, że jesteście na to strasznie cieci - nie wiem dlaczego), to prosze chociąż o podanie mechanizmu działania i potrzebnych do tego funkcji (zestawienie tych funkcji)

pozdrawiam
TomASS
Jeśli dobrze zrozumiałem, to masz jakąś liczbę linii i chcesz ją stronicować. Natomiast z gotowcami to się mylisz: szanowny kolega nospor stworzył świetną klasę do stronicowania którą można znaleźć tutaj.
dem
thnx

chyba juz rozwiazalem swoj problem:

Cytat
To rozwiązanie nie wymaga przechowywania w pamięci całego pliku. Jest to ważne przy jednoczesnej pracy wielu instancji tego skryptu. Zużycie całej pamięci fizycznej doprowadzi do korzystania z pamięci wirtualnej, przez co prędkość działania skryptu znacznie spadnie.

Złym pomysłem jest korzystanie z funkcji file() jeśli zachodzi potrzeba odczytania tylko jednej linii z pliku. Takie rozwiązanie:

    $plik = file('plik');
    $szukana_linia = $plik[1];
 

jest bardzo nieefektywne. Wczytywany jest cały plik, podczas gdy potrzebna jest tylko jedna linia. Wydajniejszy jest poniższy kod. Wydajność zależy od wielkości pliku - np. dla pliku zawierającego 1000 linii zysk jest około 400-krotny.

    $fp = fopen('plik', 'r');
    fgets($fp);
    $szukana_linia = fgets($fp);
    fclose($fp);
TomASS
1. To może zapodaj jak to rozwiązałeś
2. A co ma ten cytat do tego tongue.gif
dem
Cytat(TomASS @ 2006-01-31 10:51:12)
1. To może zapodaj jak to rozwiązałeś
2. A co ma ten cytat do tego tongue.gif

no tak, że na podstawie tego cytatu wiem jak wyciagnąc jedna linia z pliku(dowolna linia)... a jeśli wiem jak wyciągnąc jedna linia to moge to równie dobrze zrobić dla n koljnych lini .. czy nie?smile.gif

wlasnie biore sie za potestowanie tego co napisał leon na swojej stronie i dowiem sie czy dokładnie o to mi chodziło... jak mi sie uda wkleje tu kodzik ;-)

** cytat ten, tez, powiedzial to o co mi chodzilo... aby nie tworzyc n indexow tablicy dla kazdej lini(bo po co, jesli ma byc podzial na strony) tylko te linie ktore chce...

*** pytanie teraz tylko czy dam rade to zrobic poprawnie :E
mike
1. Za pomocą file() tworzysz tablicę.
2. Za pomocą arra_splice() wycinasz kawałek tablicy, poczyanjąc od dowolnego miejsca, dowolną długość. Czyli wyciągasz ileś linii winksmiley.jpg
3. Za pomocą implode() możesz złożyć ja do kupy, jako łącznika używając entera, czyli "\n"
dem
Cytat(mike_mech @ 2006-01-31 11:02:22)
1. Za pomocą file() tworzysz tablicę.
2. Za pomocą arra_splice() wycinasz kawałek tablicy, poczyanjąc od dowolnego miejsca, dowolną długość. Czyli wyciągasz ileś linii winksmiley.jpg
3. Za pomocą implode() możesz złożyć ja do kupy, jako łącznika używając entera, czyli "\n"

heh..nie powiedziałem tego na poczatku.. w sumie powinienem najpierw o to spytać... czy wczytanie np. 400 lini jest bardzo obiciązające? mi sie wydaje, ze jest wiec chcialem jakos uniknac wczytywania do tablicy calego pliku :E

ale i tak thnx bo nie znałem pt. 2 :]

*** yyy..jak ustawic wskaznik na poczatku dowolnej lini?biggrin.gif kurde, trudne to
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.