![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 96 Pomógł: 7 Dołączył: 24.01.2006 Skąd: lublin/wawa Ostrzeżenie: (0%) ![]() ![]() |
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 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
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.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 96 Pomógł: 7 Dołączył: 24.01.2006 Skąd: lublin/wawa Ostrzeżenie: (0%) ![]() ![]() |
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); |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 660 Pomógł: 13 Dołączył: 9.06.2004 Skąd: Wrocław i okolice Ostrzeżenie: (0%) ![]() ![]() |
1. To może zapodaj jak to rozwiązałeś
2. A co ma ten cytat do tego ![]() -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 96 Pomógł: 7 Dołączył: 24.01.2006 Skąd: lublin/wawa Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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? ![]() 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 Ten post edytował dem 31.01.2006, 12:00:41 |
|
|
![]()
Post
#6
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 3. Za pomocą implode() możesz złożyć ja do kupy, jako łącznika używając entera, czyli "\n" |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 96 Pomógł: 7 Dołączył: 24.01.2006 Skąd: lublin/wawa Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() 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? ![]() Ten post edytował dem 31.01.2006, 12:41:27 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 00:34 |