Lazy generovanie náhladov obrázkov rubrika: Programování: PHP
4
lt
položil/-a 28.1.2015
Ahojte. Po prečítaní článkov http://blog.medio.cz/jak-ukladame-obrazky a http://blog.medio.cz/jak-zobrazujeme-obrazky som sa rozohodol nasadiť podobnú funkciu na jeden vačší projekt (cca 1000 nových obrázkov denne), ale do budúcna aj na menších weboch.
V skratke ako to bude fungovať:
- v .htaccess skontrolovať cez "-f" existenciu náhladu obrázka - ak existuje, stiahne sa rovno tento statický súbor.
- ak neexistuje, pošle sa php skriptu cesta a po overení všetkých údajov (existencia pôvodného súboru, v configu povolená velkosť náhladu) sa vytvorí náhlad a rovno pošle prehliadaču.
- ide mi hlavne o pohodlnosť pridávania nových typov náhladov (zmenou cesty v src a configu) + netreba pri uploade naraz generovať XY typov náhladov.
Chcel by som poprosiť ludí čo majú s podobným systémom skúsenosti o tipy a rady (odporúčané postupy, čomu sa vyhnúť a podobne).
Poznámky:
- v článkoch vyššie sa píše, že pri generovaní vačšieho množstva zmenšenín môže toto aj zabiť server. Toho sa najviac obávam. Stáva sa to?
- obrázky môžu byť vo vačšom rozlíšení (limit je 5 MB na súbor, len jpg)
- zdielaný hosting (žiadny exec() ani ImageMagick, len GD)
- môže sa stať, že v budúcnosti sa pridá nový rozmer náhladu a bude ho treba vytvoriť zo všetkých (tisícov) obrázkov (predgenerovať ich všetky, alebo to nechať na automatike?)
- naraz na jednej strane sa môže zobraziť max. 30 obrázkov (náhladov)
Budem rád za každý tip alebo odkaz (našiel som len pár tém na Stack Overflow a fóre Nette), ideálne od ludí čo už tento postup používajú.
Diky
odkaz
6
Žížala
odpověděl/-a 29.1.2015
Ad adresářová struktura (jen tak z hlavy)
Není to lepší než nějaká MD5? Budete mít max 1000 obrázků v adresáři.
Komentáře
- lt : Pekné, určite skúsim. — 29.1.2015
- JaSei : My tedy pouzivame (na soubory obecne, ale to je detail) prvni byty (sha256, ale to je dalsi detail) a funguje to fajn... Napr 00/11/22/00112233xxxx.dat... Tri urovne = 256^3 souboru celkem po jednom souboru v kazdem adresari (hashovaci algoritmus zaridi skoro idealni rozlozeni) — 29.1.2015
- tomas.fejfar : Bylo by vhodndější používat modulo (zbytek po dělení), aby dva po sobě jdoucí obrázky nepadly do stejné složky ;) — 13.2.2015
- Žížala : @tomas.fejfar: Co je na tom špatného? Pak by šla do kýblu myšlenka 1000 souborů na folder. — 16.2.2015
- PeterA : Tento príklad funguje iba ak je $IDObrazku menšie ako 999999. Ak je väčšie, na tretej úrovni bude viac ako 1000 adresárov. Odporúčam skôr niečo ako písal unavensluncem, ja používam toto: function getSafeDir($id, $level = 4) { $hash = hash('sha256', $id); for($i = 0; $i < $level; $i++) { $dir .= ord(substr($hash, $i, 1)) . DIRECTORY_SEPARATOR; } return $dir; } — 19.3.2015
Pro zobrazení všech 4 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře