Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Najszybsza funkcja odczytująca zawartość plików
Forum PHP.pl > Forum > Przedszkole
gcdreak
Witam!
Jaki jest najszybszy i zalecany sposób odczytywania plików .txt ?
drake88
Najzwyczajniej funkcja file..
guitarnet.pl
nie kłam

http://www.raditha.com/wiki/Readfile_vs_include
erix
blink.gif

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
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 haha.gif
gcdreak
używałem głównie file_get_contents
ale chciałem się dowiedzieć co sądzicie o funkcjach tego typu.
guitarnet.pl
najlepiej sadzic cos na podstawie testow czyli fpassthru() i readfile() sa najszybsze, przeczytaj artykul
gcdreak
Przeczytałem, przeczytałem blinksmiley.gif
dr_bonzo
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
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
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
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
To może zrobisz ranking funkcji wynikający z twoich testów?
Jaka je przeprowadzałeś?
guitarnet.pl
przeciez podalem link gdzie masz "ranking" a scislej wyniki testow kilka postow wyzej
Pilsener
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.