Autor | Zpráva | ||
---|---|---|---|
Pavel Straka Profil |
#1 · Zasláno: 28. 12. 2013, 22:42:28
Dobrý večer, rád bych poprosil zkušenější o pomoc.
Na téma vyčerpaná paměť jsem našel zde na fóru několik vláken, ale ne odpověď na mou otázku. Chyba se objevuje, pokud uživatel nahraje fotografie ve vysokém rozlišení (4600 x 3000). Zvýšit limit pomocí ini_set("memory_size","XXX") není možné, zřejmě je potřeba to řešit přes hosting. Můj dotaz ale směřuje trochu jinam - existuje způsob, jak zamezit zobrazení chybové hlášky bez omezení velikosti velikosti nahrávaného soboru? Je dobrým řešením jednoduše navýšit limit paměti? Děkuji za raqdy. |
||
Davex Profil |
#2 · Zasláno: 28. 12. 2013, 22:56:15
Pavel Straka:
„Chyba se objevuje, pokud uživatel nahraje fotografie ve vysokém rozlišení (4600 x 3000).“ Tu chybu nemůže způsobit samotné nahrání obrázků, ale až jeho zpracování funkcemi z GD knihovny. „Můj dotaz ale směřuje trochu jinam - existuje způsob, jak zamezit zobrazení chybové hlášky bez omezení velikosti velikosti nahrávaného soboru?“ Ano, místo GD knihovny se dá pro práci z obrázky použít ImageMagick, pokud je na webhostingu dostupný. Na něj se memory_limit většinou nevztahuje.
„Je dobrým řešením jednoduše navýšit limit paměti?“ Taky je to jedno z možných řešení. |
||
Alphard Profil |
#3 · Zasláno: 28. 12. 2013, 23:07:26
Když kouknete do Nejčastější potíže s PHP (FAQ), je tam i odkaz na kalkulačku, kolik poměti bude pro danou fotku potřeba.
|
||
Pavel Straka Profil |
#4 · Zasláno: 29. 12. 2013, 16:41:36
Davex:
Ano, špatně jsem se vyjádřil, chybu způsobuje až samotné zpracování. Jako nejjednodušší způsob se mi jeví tedy prosté navýšení limitu paměti. Pokud tomu ale rozumím správně - teoreticky žádné navýšení není dostatečné. Existuje způsob, jak před vyčerpáním paměti (dosažením limitu) zobrazit nějakou chybovou hlášku a nenechat skript spadnout Fatal Errorem? Díky. |
||
Davex Profil |
#5 · Zasláno: 29. 12. 2013, 23:56:40
Pavel Straka:
„Pokud tomu ale rozumím správně - teoreticky žádné navýšení není dostatečné.“ Prakticky navýšení na vhodnou hodnotu je dostatečné. Stačí si jen uvědomit, kolik bude v paměti současně obrázků a kolik místa každý zabere. + velký obrázek v TrueColor zabere 4600 * 3000 * 3 *1.8 ~ 71 MB + zmenšený obrázek 1500 * 1000 * 3 * 1.8 ~ 8 MB = dohromady by tedy měl stačit memory_limit kolem 80 MB
„Existuje způsob, jak před vyčerpáním paměti (dosažením limitu) zobrazit nějakou chybovou hlášku a nenechat skript spadnout Fatal Errorem?“ Mělo by to jít odchytit kombinací register_shutdown_function() a error_get_last() .
|
||
Časová prodleva: 10 let
|
0