Autor | Zpráva | ||
---|---|---|---|
Trdlo Profil * |
#1 · Zasláno: 15. 2. 2010, 11:12:21
Zdravím, snažím se použít fci gzfile() na 3MB soubor a vypisuje to:
Fatal error: Allowed memory size of 57671680 bytes exhausted (tried to allocate 31 bytes) - chyba je samozřejmě na tom řádku, kde je gzfile() kód snad nemusím vypisovat je tam prostě jen: $lines = gzfile("file.txt.gz"); Nejdivnější je, že soubor 2,28MB to rozbalí krásně. Na webhostingu je v php.ini memory_limit 55M , což odpovídá tomu "Allowed memory size of 57671680 bytes" v té chybové hlášce. Přece nemůžu chtít zvýšit paměť kvůli 3MB! To je tak fce gzfile() opravdu tak paměťově náročná? Co když bude mít ten soubor "file.txt.gz" jednou 5MB - to budu potřebovat 100MB paměti pro PHP? Nemá s tím někdo zkušenosti? Předem díky. P.S. nevím jestli to s tím souvisí, ale rozpakovávám tím PHP postupně 5 souborů (2,28MB ; 41kB ; 113kB ; 3MB ; 14kB). Když ten 3MB odkomentuji, tak je to všechny v pohodě rozbalí, ale ten 3MB to nerozbalí ani, když ho rozbaluji samostatně (že mám v PHP souboru jenom ten jeden řádek). |
||
Kajman_ Profil * |
#2 · Zasláno: 15. 2. 2010, 11:28:49
Pamět zaberou rozbalená data, která budou mnohem větší. Musíte celý rozbalený soubor dávat do paměti? Co použít např.
http://www.php.net/manual/en/function.gzread.php |
||
Kajman_ Profil * |
#3 · Zasláno: 15. 2. 2010, 11:30:16
|
||
Trdlo Profil * |
#4 · Zasláno: 15. 2. 2010, 11:36:52
Kajman_: zatím díky, jdu to ověřit.
|
||
Trdlo Profil * |
#5 · Zasláno: 15. 2. 2010, 13:35:52
Tu funkci gzfile() jsem použil, protože mi to pěkně načetlo do pole. Nedá se nic dělat, tak jsem musel překopat celý kód a vypisovat to po řádcích. Možná byl problém i v tom poli, že bylo tak obrovské. Takže, Kajman_, díky za tip http://www.php.net/manual/en/function.gzgets.php , funguje to.
|
||
Časová prodleva: 13 let
|
0