File_get_content Vs Fread
Sziasztok!
Nemrég jutott eszembe, hogy vajon mi lehet a különbség az fopen-fread-fclose kombináció és a file_get_contents között.
Melyik a gyorsabb?
Vagy melyik a jobb szerintetek?
■ Nemrég jutott eszembe, hogy vajon mi lehet a különbség az fopen-fread-fclose kombináció és a file_get_contents között.
Melyik a gyorsabb?
Vagy melyik a jobb szerintetek?
Más felhasználás
file_get_contents
, ha folyamatában akarod valamiért feldolgozni, vagy mondjuk keresel benne valamit, akkor pedigfread
.Mondjuk én eddig vagy
Nem is hittem volna, hogy máshol használják fel a kettőt. De azért köszönöm! :)
Gondolkozz
A
. Ehhez te beolvasnád az egész fájlt memóriába, vagy inkább csak addig haladnál, amíg meg nem találtad, amit keresel?Illetve ha az a 2Mb-os
Ez egy jó kérdés!
fopen
/fread
vonalat ajánlom, bár kétségkívül kényelmesebb afile_get_contents
..fread()
nyit egy file-handlert (
fopen
), amely jelzi a programnak, hogy tevékenységet fogunk végezni a fájllal, így betölt egy mutatót a memóriába az adott elérési úttal.. arra figyelni kell, hogy ezt műveletek után le kell zárni, fel kell szabadítani a memóriát (fclose
), különben elkanászodik - :)ha adatokat szeretnénk kinyerni a fájlból, akkor azt megtehetjük byte alapon (
fread
), illetve soronként (fgets
), hogy csak a két legfontosabbat említsem, de lehetőség van CSV feldolgozásra is (fgetcsv
) és ezeken túl rengeteg lehetőség van még..file_get_contents()
megpróbálja megnyitni a fájlt (akár URL-en keresztül is ha nincs letiltva a beállításokban, alapértelmezettként nincs), majd visszatér a teljes tartalommal, ami egy string lesz..
teljesen automata, bizonyos esetekben nagyon kényelmes, ha például egy kis konfigurációs vagy cache fájlt kell beolvasni, ami nem túl nagy..
ha hatalmas fájlokkal szeretnénk dolgozni, amit már nem bírna a fizikai memória egyszerre vagy optimalizálni szeretnénk a folyamat futási idejét, akkor mindenképp az előző módszert használnám, vannak esetek (több 100 MB-os szinkron XML-ek) amikor elkerülhetetlen, hogy részenként dolgozzuk fel az adatot..
ez a módszer kényelmesebb és támogatja a távoli fájlelérést is, azonban ha ez a szempont inkább cURL-t használnék, mert ott lehet időtúllépést megadni, ennél a megoldásnál pedig ha nem válaszol a távoli szerver elhasal a folyamat..
REMÉLEM TUDTAM SEGÍTEN! - :)
fopen
~
de kösz, hátha egyszer fontos lesz - ;)
Igen, de