![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 4 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki przypadek:
Po stronie przeglądarki chcę wyświetlić ostatnie linie pliku log serwera. Plik log-ów naturalnie jest textowy i ma wielkość plus nieskończoność (nieskończoność do granic miejsca na macierzy). Można co prawda otwierać cały plik i go czytać i czytać, ale przy większym pliku jest bezsensu (pamięć i wydajność). Potrzebuje jedynie ostatnie 10 linii pliku. macie jakiś szybki dobry pomysł ![]() -------------------- ==============================================
Bo ja jestem Wróbelek Htmlek ============================================== |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat (nieskończoność do granic miejsca na macierzy). ~ociu, tym na pewno osiągnie, co trzeba... ![]() Co do wątku - najlepiej wywołać polecenie powłoki, a jeśli już koniecznie musi być via PHP, to: http://pl.lmgtfy.com/?q=tail+php -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 4 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pyszna rada.
File wrzuca 120MB do array zjadając momentalnie całą pamięci udostępnioną skryptowi, żeby wczytać ostatnie 10 linijek. Ktoś ma lepszy pomysł? Co do wątku - najlepiej wywołać polecenie powłoki, a jeśli już koniecznie musi być via PHP, to: http://pl.lmgtfy.com/?q=tail+php Z takim podejściem to równie dobrze można zamknąć to forum i dać wszystkim do zrozumienia, żeby szukać wszędzie indziej tylko nie tu. Jest pełno class i innego G w necie do symulowania taila, ale czy nie da się tego zrobić jakąś funkcją w PHP?? Albo przynajmniej kombinacją funkcji? ![]() Już całkiem blisko byłem przy file_get_contents(), gdzie można podać offset i maxlenght. Można odczytać rozmiar pliku i .... i tu jest właśnie bug, bo funkcja przyjmuje wartość liczbową odpowiadającą kolejnemu znakowi w pliku (np 1400 znak w pliku). Tylko, że wpisy mają różną długość, ciężko trafić w początek 10 linji od końca. Najpierw by trzeba było policzyć ilość znaków w pliku - też słaby pomysł. Ktoś jeszcze ma jakiś pomysł ![]() Ten post edytował mkozak 5.01.2010, 15:43:27 -------------------- ==============================================
Bo ja jestem Wróbelek Htmlek ============================================== |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
File? Człowiek ma problem, by przekopać się przez plik a co dopiero wczytać go do pamięci. Po co ładować plik do pamięci jako tablicę, gdy chcemy odczytać tylko jego koniec?
- pisane z palca, ale powinno działać Musisz mniej więcej obliczyć, ile bajtów od końca to będzie 10 linijek, następnie przeparsować ten fragment i wrzucić linijki do tablicy, z której po odwróceniu odetniesz (array_slice z tego co pamiętam) każdy index większy niż 10. Edit: w manualu pełno przykładów na różne taile: http://pl2.php.net/manual/pl/function.fseek.php Ten post edytował Pilsener 5.01.2010, 16:00:11 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Z takim podejściem to równie dobrze można zamknąć to forum i dać wszystkim do zrozumienia, żeby szukać wszędzie indziej tylko nie tu. Ciężko kliknąć 5. wynik? Naprawdę ciężko? Cytat ale czy nie da się tego zrobić jakąś funkcją w PHP?? Nie. Gdyby była, podałbym link do manuala. Cytat Ktoś ma lepszy pomysł? tail wykonane jako polecenie powłoki. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 78 Pomógł: 4 Dołączył: 21.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki Pilsener
GR8 Success
Ciężko kliknąć 5. wynik? Naprawdę ciężko? Nie. Gdyby była, podałbym link do manuala. tail wykonane jako polecenie powłoki. Widzę, że ktoś tu tylko nabija ilość postów, zamiast przeprowadzić rzeczową dyskusję....... ![]() Ten post edytował mkozak 5.01.2010, 16:03:46 -------------------- ==============================================
Bo ja jestem Wróbelek Htmlek ============================================== |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.07.2025 - 12:45 |