PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Ahoj, chystám se na tvorbu fotogalerie a zvažuji, zda obrázky ukládat:
Z pohledu výkonnosti se více kloním k druhému řešení, neboť velikost fotek bude s jistotou větší, než stovka kilobajtů, takže by první řešení kladlo velký zápřah nejen na samotnou databázi, ale i na přenos dat mezi databází a web serverem. Zvedla by se také paměťová náročnost skriptu.
Ovšem první řešení by mi umožňovalo mít data konzistentní, odpadla by nutnost hlídat integritu dat – databáze si toto hlídá sama. Ve druhém případě mohu mít v databázi záznamy o fyzicky neexistujících obrázcích nebo naopak mohu mít uloženy obrázky, na které neexistuje v databázi odkaz.
Zajímalo by mě, zda někdo podobný problém řešil se zajímavějším výsledkem, než je prosté využití druhé metody a občasná „ruční“ kontrola integrity?
Ja ukladam data na disk a v db mam jenom reference (konkretne nazev souboru). Pri ukladani to resim tak, ze nejdriv uploadnu fotku, vytvorim nahledy a pripadne resiznu velikost a az kdyz vsechno tohle probehne uspesne tak zapisuju soubor do DB. Takze chybou muze nastat pouze situace, kdy mam na disku soubor, na kterej nemam v db referenci (nepocitam, kdyz nekdo smaze z disku data). Pri odstranovani zase nejdriv smazu radek v db a pak az mazu soubory na disku (pred smazanim z db kontroluju, jestli mam prava soubory smazat). Osobne nepovazuju soubory nez reference v db za problem a neresim, maximalne jednou za cas spustim skript, kterej smaze soubory bez zaznamu v db.
Do databáze obrázky rozhodně necpi. Všechny výhody a nevýhody si popsal celkem dobře.
Případnou nekonzistenci můžeš řešit prostým testem přes
file_exists() při načítání stránky (minimální výkonnostní dopad),
pokud by ses bál výkonu, tak lze testovací větev uzavřít do podmínky –
např if (rand(0,99)<5). Další možnost je řešit to přes
ErrorDocument 404 handler nebo jak píšeš nějakým maintenance skriptem (tam
to lze z obou stran).
hledáme zkušené programátory v PHP / Nette: http://www.twobits.cz/volna-mista/
Řeším teď něco podobného, i když otázka z ní trošku jinak.
Jedná se o velmi jednoduchou galerii (vlastní galerie a informace o nich jsou uložené v databázi, navázané na zbytek RS), ale nevím, jestli má cenu v databázi evidovat fotky. Nepotřebuji u nich žádné popisky, datum vytvoření, vlastně by tam byly jen názvy souborů, které si ale dokážu zjistit přes mnou napsaný FileBrowser.
Co Vy na to?
Pokud si informace o fotkách nepotřebuješ ukládat do DB, tak rozhodně
použít FileBrowser či tak něco. Osobně bych to řešil přes vlastní
komponentu FileStorage, která je velmi podobná keši v Nette – má podporu
jmenných prostorů a do každého jmenného prostoru lze nahrávat libovolné
soubory. V tvém případě bych to řešil tak, že by pro každou galerii byl
jmenný prostor (třeba fotogalerie/45, kde 45 je id galerie
z DB) a v něm fotky té dané galerie.