Manualai.lt Forumas
PHP ir SQL => PHP ir SQL - Klausimai ir pagalba => Temą pradėjo: Vykius 2014-06-28 12:41:46 pm
-
Sveiki!
Norėjau paklausti nuomonės, tarkime yra daug vartotojų kurie turi daug nuotraukų, kaip jas saugoti? ar rašytį adresus paveikslėlių i duomenų baze? ar eiti prie aplankalo ir bandyti pagal pavadinimus išsiimti?
-
Sveikas,
Vienas iš variantų yra pvz saugoti paveikslėlį kaip user.id ir tada jį atvaizduoti - lengviausias būdas. Kitas yra sakykim sugeneruoti kokį pavadinimą ir jį saugoti duomenų bazėje, o išgauti - tuo pačiu principu :)
-
jei turi daug failu, tai skanavimas direktorijos ieskant konkretaus failo, nezinant tiksliai kelio iki jo gali lagint, bet jei zinai tiksliai kelia iki failo, tai gali i folderi ir sukist 50k fialu ir bedos nematyt, bet jei prireiks tau skanuoti toki folderi, tai gali but, kad bus bedu. siaip siulau, failus delioti isskaidant i folderis po kokius 10k-20k. pasieskok testu su failais, pamatysi kaip performencas keiciasi prie skritingu salygu
nepamirsk kazka pasidaryt, kas patikrintu, ar image nera su virusu viduj.
-
Kuri atskira nuotrauku lentele duomenu bazeje. Jeigu dar jie skirtinguose aplankuose salia dar iterpi reiksme aplanko pavadinimo arba viso path'o. Dar priskiri kiekvienai nuotraukai vartotojo id ir nesuki daugiau galvos ;)
-
gali pasidaryt unique hash tag'a kiekvienai fotkej, nes jei desi tiesiog id, o id yra auto increment, tai negalesi paslepti zmoniu fotkiu, negalesi padaryti "private foto" ir pns funkciju niekada, nes bus lengva atspeti kelia iki img pagal user id.
siaip prisijunk prie savo fb profilio ir pasiziurek kelius iki image'o, gal pagausi apie ka kalbu :)
aisku, galima daryti isvis saugai image'a belekur, duombazej saugai hash tag'a pagal kuri atpazisti kur tas image yra ir kai kazkas requestina image'o, tai tu jam su php ji sugeneruoji ir paduodi. tokiu budu isvis image'a gali saugot kokiam dropbox'e ar google drive'e. pagal hash'a visad galesi pasikeist image'o vieta.
-
Prie to pačio ir mano klausimas manau tinka.
Jeigu laikoma yra apie 5000 nuotraukikių, kaip geriau jas laikyti, ar kiekvieną foto saugoti duombazėj su tookia struktūra:
user_id, foto_pavad
Ir laikyti kažkokiam foldery. Ar geriau ir greičiau būtų tiesiog pagal userio id atidaryti folderį tarkim /foto/$ID ir jame praskenuoti visus failus ir atspausdinti? T.y. ar toks būdas, nekaupiant duombazėj visai duomenų, tik žinant folderių struktūrą yra greitesnis ir naudingesnis, ar nelabai?
-
ant web tokių dalykų neesu daręs, bet manau galima pritaikyti, kad kiekvienas paveiksliukas turi savo id pvz. picture_id ir yra atskira lentelė, kuri saugo picture_id ir nuorodą į paveiksliuką. Tada prie userio tiesiog pridedi picture_id ir taip gali pridėti daug paveiksliukų ir gan patogu šalinti
-
Prie to pačio ir mano klausimas manau tinka.
Jeigu laikoma yra apie 5000 nuotraukikių, kaip geriau jas laikyti, ar kiekvieną foto saugoti duombazėj su tookia struktūra:
user_id, foto_pavad
Ir laikyti kažkokiam foldery. Ar geriau ir greičiau būtų tiesiog pagal userio id atidaryti folderį tarkim /foto/$ID ir jame praskenuoti visus failus ir atspausdinti? T.y. ar toks būdas, nekaupiant duombazėj visai duomenų, tik žinant folderių struktūrą yra greitesnis ir naudingesnis, ar nelabai?
Jeigu tu nori atspausdinti visus is to aplanko vienu metu ir daugiau nieko, tai duombazes nereikia. Bet faktas, kad tu tu 5000 viename puslapyje nespausdinsi. Is tu 5000 tau reikes atrinkti pagal vartotoja ir dar pagal kieki kuris bus rodomas viename puslapyje. Taigi tiek greicio, tiek patogumo delei cia yra nesamone(gal kazkada gyvenime ir buvo samone), todel geriau naudoti duomenu baze. Issimsi reikiama kieki konkreciu raktu(nuorodu) ir zinos kodas tiksliai i ka kreiptis. Be to saugant duomenu bazeje ateityje, galesi daug daugiu funkciju atlikti.
-
Tai tas faktas, kad tarkim duombazėj bus 5000nuotraukų, ir iš jų pagal vartotojo ID po kokias 20 atrinkinėti reikia kiekvienam puslapio atidaryme, kažkokios apkrovos visai nebus pastebima? Kokie duomenų kiekiai turi būti, kad reikėtų susirūpinti ir tarkim keisti struktūrą ar pnš, kad nereikėtų per didelius masyvus rinkinėti info?
-
Nereikia ten kazkokiu stebuklingu masyvu. Uztenka pasidaryti teisinga DB struktura, tarkim susikuri lentele kur bus saugomos nuotraukos:
user_id | name
---------------------------
1 | photo1.jpg
---------------------------
1 | photo2.jpg
Tada pasirasai sql uzklausa:
<?php
$user_id = 1;
$offset = 0; // Irasai imami nuo sito nurodyto indekso
$limit = 20; // Kiek irasu paimti
$query = mysqli_query("SELECT * FROM `lentele` WHERE `user_id` = {$user_id} LIMIT {$offset}, {$limit}");
?>
O apie kokius tu cia didelius kiekius dar kalbi tai as nesuprantu, nes puslapio uzkrovimo metu imami bus tik tie irasai kuriu tau reikia.