gcdreak
15.04.2009, 21:39:09
Witam!
Jaki jest najszybszy i zalecany sposób odczytywania plików .txt ?
drake88
15.04.2009, 21:45:13
Najzwyczajniej funkcja file..
guitarnet.pl
15.04.2009, 22:01:23
erix
15.04.2009, 22:01:39
Chyba tylko na Twoim PC...
file" title="Zobacz w manualu PHP" target="_manual należy do najwolniejszych...
Najszybsze, to
file_get_contents" title="Zobacz w manualu PHP" target="_manual, w manualu doczytasz, jeśli chcesz wiedzieć, dlaczego.
Skie
15.04.2009, 22:02:45
Jemu raczej chodziło o różnice w szybkości działania różnych funkcji do oczytu plików .txt, np. file_get_contents() a fread();
Szczerze mówiąc to nie wiem, ja operuje na fopen(), fread(), fwrite(), ftruncate() i fclose() ;-)
Sam przetestuj różne funkcje do odczytywania ;-)
EDIT:
Widzę, że wiele osób napisało w jednoczesnym czasie, więc mój post jest tutaj trochę zbędny
gcdreak
15.04.2009, 22:11:37
używałem głównie file_get_contents
ale chciałem się dowiedzieć co sądzicie o funkcjach tego typu.
guitarnet.pl
15.04.2009, 22:20:51
najlepiej sadzic cos na podstawie testow czyli fpassthru() i readfile() sa najszybsze, przeczytaj artykul
gcdreak
15.04.2009, 22:23:17
Przeczytałem, przeczytałem
dr_bonzo
16.04.2009, 07:11:12
Zalezy co chcesz z tym plikiem dalej robic.
File get contents jest najszybsze/najwygodniejsze - ale potem cala zawartosc pliku trzymasz w pamieci.
Jak chcesz przetwarzac ogromy plik, powiedzmy linia po linii, to fopen() + fread() etc.
guitarnet.pl
16.04.2009, 13:28:59
powtorzylem te testy u siebie file_get_contents ma coraz gorsze wyniki wraz z wzrostem wielkosci pliku, na malych plikach jest blizej czolowki ale nigdy najlepszy, 5 prob, najgorszy wynik i najlepszy odrzucony
czyli na pewno file_get_contents nie jest najszybszy, a czy wygodniejesze? hmm to juz chyba kwestia tego czy ktos lubi zieona czy czerwona koszule, ciezko powiedziec
dr_bonzo
16.04.2009, 15:18:57
Cytat
powtorzylem te testy u siebie file_get_contents ma coraz gorsze wyniki wraz z wzrostem wielkosci pliku, na malych plikach jest blizej czolowki ale nigdy najlepszy, 5 prob, najgorszy wynik i najlepszy odrzucony
czyli na pewno file_get_contents nie jest najszybszy, a czy wygodniejesze? hmm to juz chyba kwestia tego czy ktos lubi zieona czy czerwona koszule, ciezko powiedziec
1. quote - o jakich wielkosciach plikow mowisz? 100kB? 100MB?
2. wygodniejsze - 1 funkcja i gotowe, a tatko masz fopen(), fread() fclose()
guitarnet.pl
16.04.2009, 15:45:08
ad 1. pierwszy 100kB accesss log, drugi 500kB, w powyzszym tescie uzyli 32kB i 1MB zdaje sie
ad 2. fopen() i fpassthru() albo readfile() aczkolwiek wymaga to ob_start i ob_get_content jesli nie chcesz wyswietlac pliku w tym miejscu, przy czym dla tego pliku 500kB zysk czasowy jest ponad dwukrotny nawet z kontrola buffora, nie testowalem pamieci w moich testach ale dla 1MB pliku ten test jest w tamtym linku
nie wiem na ile miarodajne sa oba testy ze wzgledu na architekture serwera, wyniki moga sie roznic
gcdreak
16.04.2009, 18:58:49
To może zrobisz ranking funkcji wynikający z twoich testów?
Jaka je przeprowadzałeś?
guitarnet.pl
16.04.2009, 19:13:31
przeciez podalem link gdzie masz "ranking" a scislej wyniki testow kilka postow wyzej
Pilsener
17.04.2009, 09:44:34
No dobra, ale co z celem? Bo wszystko zależy od tego, do czego pliku będziemy używać.
1. Chcemy wczytać cały plik do zmiennej: file_get_contents (nie tam żadne fread + filesize)
2. Chcemy trzymać w pliku uporządkowane, niewielkie dane (np. plik konfiguracyjny): file
3. Chcemy użyć pliku jako bazy danych (np. księga gości, newsy, duża liczba informacji, jednak dostęp tylko do niektórych) - wtedy plik parsujemy, a służą nam do tego funkcje fopen, feof, fgets oraz pętla while.
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.