El lehet menni a végletekig. Van egy index.php fájl, php nyitó és lezáró tag között mysql-hez csatlakozás és abból lekérdezi az index.php tartalmát. Fizikailag se kereses.php, se css, se js fájl, mindent az adatbázisból olvas ki. Gondolom nem akadály ezt megvalósítani, ha nem tévedek. Csak egy .htaccess és egy index.php láttán egy profi meg csak vakarhatja a fejét, hogy egy nagy tudású weboldalnak hol lehetnek a többi fájljai.
Az igazi kérdés, hogy meddig érdemes elmenni, hogy optimális teljesítményre, jó átláthatóságra, jó használhatóságra tegyünk szert. Gondolom én, hogy számít az is, hogy mennyire dinamikus weboldalt akarunk készíteni.
Nektek milyen tapasztalataitok van ezzel kapcsolatban? Adatbázisban tároltok például php kódokat, amit majd szükség esetén futtatni fog a weboldal?
- atomjani blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Remélem ezt most nem gondoltad komolyan (a bejegyzésed egyik pontját sem).
Mindent arra használunk, amire való.
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Nyelvtől is függ, hogy mi a jó, mi használható - én vettem részt olyan webes szolgáltatás (kb. 3500 usernek belső portál) fejlesztésében, ahol természetes volt, hogy mindent tárolt eljárásban írunk meg, ergo minden a DB-ben foglal helyet (Oracle IAS). Nekem speciel jobban tetszett, mint péhápében bohóckodni :-P
- A hozzászóláshoz be kell jelentkezni
velemeny: lol
--
NetBSD - Simplicity is prerequisite for reliability
- A hozzászóláshoz be kell jelentkezni
Elképzeltem, amikor szerkeszteni akarod a PHP-kódot:
echo "SELECT php_code FROM code WHERE code_name='index.php'" | mysql > index.php
KedvencSzerkeszto index.php
echo "UPDATE code SET php_code="`cat index.php`" WHERE code_name='index.php'" | mysql
Nagyon egyszerű és könnyen kezelhető, tényleg be kellene vezetni :)
De azért egy-két dolgon elgondolkodtam:
- verziókezeléssel mi lesz?
- ha a látogató böngészőben az index.php-ra hivatkozik, akkor lefut egy lekérdezés az SQL-szerveren (amit mi fog elindítani?), ami "letölti" az index.php-t ÉS azok függőségeit is, és lefuttatja az index.php-t. Nem lesz ez egy "kicsit" költséges és bonyolult? Nem fogsz ezzel gyakorlatilag oda kilyukadni, hogy van egy index.php-d és azok "függőségei" is? Pont oda, ahonnan kiindultál, csak most az egyszerű fájlból kiolvasom, lefuttatom helyett van egy adatbázisból kiolvasom, (valamilyen, fizikai vagy "virtuális") fájlba kiírom, és lefuttatom.
Amúgy sub :)
- A hozzászóláshoz be kell jelentkezni
verziókezelés miatt lenne az adatbázis - minden változást új rekordba, mit nem lehet ezen megérteni?
sub ;)
- A hozzászóláshoz be kell jelentkezni
bar a konkret pelda (.php-k tarolasa), mint ahogy lentebb irtak, vet fel kerdeseket (cache-eles,...), azert az otletet igy leszarozni kicsit nagyarcunak tunik.
SAP-ban sikerult megoldani (evtizedekkel ezelott), hogy a DB-ben legyenek a forraskodok (sot a leforditott bajtkodok is), verziokezeles, package management, teljes lifecycle megoldas van, integraltan all-in-DB modon. Mindezt ugy, hogy sok adatbaziskezelot tamogat. Szoval hatrabb az agarakkal.
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
hehh, pont ezt írtam.. ;)
- A hozzászóláshoz be kell jelentkezni
Attol, mert valaki leimplementalta, meg nem lesz ertelmes megoldas. Es most rettenetesen uriasan fogalmaztam.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Hat, attol fuggetlenul hogy valaki mar megcsinalta, egy baromsag marad.
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Na igen, de az SAP-t nem is azért szeretjük, mert mindenhol követi a common sense-t. ;)
- A hozzászóláshoz be kell jelentkezni
Azt hiszem nem ilyesmire gondolsz, de Pl. a CIV5 alatt SQLite van. ;)
1gyébként ha sikerül valami brutál vasat a DB alátenni miért ne lehetne,
azért elég speciális esetnek kell lennie szerintem. ;)
- A hozzászóláshoz be kell jelentkezni
DBben tárolni forráskódot pont olyan, mint root módban futtatni az apache2/php5-t. Lehet, de nem biztos, hogy jól jársz vele.
-------------
"Mérnökkel vitatkozni olyan, mint disznóval birkózni a sárban - kis idő múlva rájössz: Ő ezt élvezi..."
Winben blogja
- A hozzászóláshoz be kell jelentkezni
> maga a css, php kódok vagy a php fájlok elérése is adatbázisban van tárolva, ez a része már érdekesebb.
> Van egy index.php fájl, [...] és [...] lekérdezi az index.php tartalmát.
> számít az is, hogy mennyire dinamikus weboldalt akarunk készíteni
> Adatbázisban tároltok például php kódokat, amit majd szükség esetén futtatni fog a weboldal?
Őszintén szólva most azt sem tudom, hol érdemes elkezdeni magyarázni. :(
- A hozzászóláshoz be kell jelentkezni
:)
- A hozzászóláshoz be kell jelentkezni
Hátőőőőő... Én inkább vékony klienst és tárolt eljárásokat használnék az SQL-ben tárolt keres.php helyett.
De a bejegyzés megmosolyogtatott. :)
--
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." John F. Woods
Get dropbox account now!
- A hozzászóláshoz be kell jelentkezni
atomjani, ki kell, hogy ábrándítsalak, de látszik, hogy amatőr vagy. Az igazi profi a site-okról csinál egy adatbázist, hogy az index.php-k se jelenjenek meg fájlrendszer szinten.
(Amúgy viccet félretéve, ha tényleg ilyen perverzióid vannak, nézz utána a FUSE-nak, egy kicsit a Python-nak, ha jól tippelem azzal tényleg meg tudod azt csinálni, hogy index.py se kelljen, csak egy connection handler a mod_python mellé, a fájlok szerkesztését meg tudod oldani egy FUSE fájlrendszerrel [és ha jó a sémád, kapásból tudsz verziózni is, access controlkodni, bár nem/nehezen leszel tranzakcionális]. Na a "Miért üres a dokumentrút?" kérdés után ott már mindenki vakarná a fejét ;) )
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
UUUUU, egy fuse alapú sqlite fs -ért kiált a nép!
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
http://www.nongnu.org/libsqlfs/
BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
NeeeeeeeEeeeeEeeeEee:( megelőztek:(
// Happy debugging, suckers
#define true (rand() > 10)
- A hozzászóláshoz be kell jelentkezni
Az még csak-csak elmegy, hogy egy blogbejegyzést adatbázisban tartunk. De az, hogy az index.php tartalma is ott legyen...
Bár láttam már olyan helyet, ahol a képek egy bináris táblában voltak. Mondanom se kell, kicsi volt az adatbázis.
--
Fontos! Ha berágok, nem feltétlen személyed ellen szól...
openSUSE 13.1 x86_64
- A hozzászóláshoz be kell jelentkezni
Én viszonylag nagy adatbázist is láttam, amiben BLOB-okban tároltak képeket. :)
(No nem fotóalbum volt)
- A hozzászóláshoz be kell jelentkezni
És milyen jó is az, amikor a BLOB-szegmenst kell karbantartani (régi szemét kihajítása után szabad helyet csinálni benne...)
- A hozzászóláshoz be kell jelentkezni
Szerencsém volt. Tilos volt törölni belőle ;)
- A hozzászóláshoz be kell jelentkezni
Ha csak fix meretu kepeket lehet feltolteni (vagy az alkalmazas lemeretezi a kepet mielott a db-be kerulne) akkor nem lesz annyira toredezett.
--
Ki oda vagyik, hol szall a galamb, elszalasztja a kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Talalkoztam mar olyan alkalmazassal (enterprise kornyezet persze), ahol az elso loadtest utani debugolas soran derult ki, hogy a fejleszto ugy gondolta, hogy 100+ megabyte-os videok tarolasa az adatbazisban jo otlet.
- A hozzászóláshoz be kell jelentkezni
A fájlrendszer is egyfajta adatbázis... Primitív, de attól még az :-D
- A hozzászóláshoz be kell jelentkezni
Nézd meg az oracle-t kicsit közelebbről! Nekik is vannak ilyen ötleteik, bár attól megkímélt a sors, hogy élőben is látnom kelljen:)
- A hozzászóláshoz be kell jelentkezni
Attól, hogy nem a "szokásos" felállást követik, attól még nem biztos, hogy annyira rossz - nekem volt hozzá szerencsém, és bizony elég jó "fájlrendszert" raktunk össze a BLOB-szegmensben lévő táblákban tárolt mindenféle fájlokra, jogosultságokkal (öröklődés lefelé, egyedi eltérések az öröklött jogoktól plusz/mínusz irányban, keresztirányú kapcsolatok (symlink?) a hierarchiában, stb), feltöltéssel, "mozgatással", törléssel együtt. Annyi volt a gond, hogy sok törlés után a töredezett szabad hely használhatatlan volt, úgyhogy rendszeres (néhány hetente) leállás, dump/restore kellett neki.
- A hozzászóláshoz be kell jelentkezni
Nem azt mondtam, hogy rossz.
Csak miután anno belenéztem a multimédiás témákba az oracle doksiban, valahogy nem sok kedvem volt hozzá, hogy élesben is használni akarjam. ;)
- A hozzászóláshoz be kell jelentkezni
Bár láttam már olyan helyet, ahol a képek egy bináris táblában voltak.
Ennek amúgy vannak szép előnyei is:
* tranzakción belül tudod kezelni a fájlokat is - ha az adatbázison kívül vannak, akkor ugyebár nem
* a mentés egyszerűsödik, egy konzisztens dump az adatbázisról garantáltan konzisztens állapotot fog mutatni (küzdeni lehet olyanokkal, hogy ugyanazon a fájlrendszeren vannak a fájlok és az adatbázis, akkor egy FS-szintű snapshotból is konzisztens lesz, de sok más problémát felvet)
* kapsz egy - mondjuk nem optimális - replikációt, már ha a DBMS tudja (egyébként kellene egyszer replikálni az adatbázist, egyszer a fájlokat, hogy legyen failover, ráadásul mindezt illene tranzakciókkal együtt...)
* ...
Valami nem túl agresszív, de létező cache megoldással* még az overhead is kezelhető lehet...
BlackY
*: így tippre akár működhetne is: egy FUSE fájlrendszer, ami indításkor lefoglal magának valami fix méretű memóriát (pl. 2G), amit cache-re használ, Postgres-ből (később lesz lényeges :) ) benyalja az aktuális könyvtár/fájlszerkezetet és felaggat egy-két notify figyelőt. Ha kap egy fájlnyitás kérést, akkor ha 1) a cache-ben van a fájl, kiszolgálja onnan, ha 2) nincs ott, akkor behúzza a DB-ből. A másik oldalon a Postgres a megfelelő táblákba való INSERT-kor/UPDATE-kor a notify csatornán leszól a fájlrendszernek, hogy változás van, az 1) ha a cache-ben volt a fájl, kidobja onnan és mindentől függetlenül 2) a belső szerkezetét update-li az új fájllal/könyvtárral. És így tranzakciókat is figyelembe veszi a cache.
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)
- A hozzászóláshoz be kell jelentkezni
MVC-ről hallottál már?
Pár probléma a 3-as megoldással: feleslegesen terheli az adatbázis szervert, ritkán változó, csak id alapján lekérdezett adatokhoz nem kell adatbázis szerver. Odavág a cache-elésnek, igaz a db tud cachelni, de a php-nak minden esetben "új" lesz a kapott kód.
Azt még el tudom képzelni, hogy deployinghoz használod a db-t, de akkor sem a kódot tárolod a db-ben, legfeljebb az aktuális verzió számát és elérhetőségének címét. De erre vannak sokkal jobb megoldások.
Egyébként a 4-es szint az, hogy tárolt eljárás (vagy pl. oracle xsql + xslt) állítja elő az oldalt. Ennek van egy olyan előnye, hogy nem kell hozzá php. ;)
- A hozzászóláshoz be kell jelentkezni
Igen. Nekem olyan is eszembe jutott, hogy mondjuk van 50 ezer user és mondjuk van 500 fajta kezdőlap nekik, mindegyiknél eltérő php kódokkal.
Azt még meg szokták csinálni, hogy lehet az usereknek kinézetet választani. Nem is feltétlenül a css teljes útvonalát kéri le az adatbázisból, mert a php fájlban szerepelhet weblap.hu/$a.css is. De van hogy saját maga szabhatja be a css fájl beállításait, ilyen a betűméret, háttérszín stb állítása.
......................
Egymás segítésére még: http://pc-kozosseg.com
- A hozzászóláshoz be kell jelentkezni
De ekkor nem magát a CSS-fájlt tárolod adatbázisban, hanem egy-két jellemzőt (pl. betűtípus, méret, szín, stb.), ami alapján mondjuk generálsz egy CSS fájlt. Ha magát a CSS-fájlt tárolnád, akkor mi történik a háttérben, ha a user változtatni akar a jellemzőkön:
- kiolvasod a CSS-fájlt
- feldolgozod a beolvasott CSS fájlt, kiszeded belőle a változtatható jellemzőket
- user megváltoztat egy-két dolgot
- legenerálod a CSS-fájlt az új adatok alapján
- módosítod az adatbázisban
Míg ha adatbázisban tárolod:
- kiolvasod a jellemzőket
- user megváltoztat
- frissíted az adatbázist
Utóbbit egyszerűbbnek gondolom.
Megjelenítésnél a jellemzők tárolásakor egy CSS-generálással lesz több.
- A hozzászóláshoz be kell jelentkezni
Talán ez a jellemzőbb, hogy csak bizonyos paraméterek vannak eltárolva az adatbázisban. Talán én is ezt tenném.
......................
Egymás segítésére még: http://pc-kozosseg.com
- A hozzászóláshoz be kell jelentkezni
Nyugtass meg kérlek, hogy nem az IT szakmában dolgozol.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Pár év múlva abban fog. De jó eséllyel szégyellni fogja ezt a korábbi ötletét (jártunk páran így).
- A hozzászóláshoz be kell jelentkezni
Valahol írta, hogy nem ebből él. Különben meg... én közel harminc évig éltem belőle.
- A hozzászóláshoz be kell jelentkezni
Lehet, hogy még együtt fogunk dolgozni valamilyen projektben.
Egyébként fontosnak tartom tisztában lenni, hogy mire is számíthatok. Az, hogy mi számít jónak és hülyeségnek, azt csak azok tudják, akik tudják, hogy ennek meg annak megvalósítása mivel jár, eredmény szempontjából mi tapasztalható. Ahogy olvasható, van olyan cég, amelyik az adatbázis kezelőt elég durván kihasználja.
......................
Egymás segítésére még: http://pc-kozosseg.com
- A hozzászóláshoz be kell jelentkezni
Igen, van, ahol az "adatbáziskezelőt durván" kihasználják. Ha azt nézzük, az ERP rendszerünk is csak egy Delphis frontend az MSSQL előtt és az egész üzleti logika tárolt eljárásokkal van megoldva, amit a kliens hívogat. Viszont ez egy MSSQL által támogatott út és módszer ellentétben azzal, amit te akarsz. (A nagyobb probléma az, hogy szimplán kijelentetted, hogy "így működik". Nem, nagyon nem így működik).
Viszont azt az apróságot ne felejtsük már el, hogy már csak azért sem igazán jó dolog ész nélkül mindent beömleszteni a DB-be, mert igen hamar meg tudja ölni a skálázódást és a teljesítményt. Gondolj bele, kell 100 fájl a DB-ből, az +100 query. Oké, egyszerű queryk, de minek, főleg, mikor létezik file cache?
Ha meg együtt dolgoznánk - vagy valamely kollégám csinálna hasonlót, - az tuti, hogy nem tartana sokáig. Vagy azért, mert rajtam múlik és szét fogok csapni a lovak között, vagy azért, mert nem rajtam múlik és azt mondom, hogy szívjon egy ilyen gányolmánnyal az, akinek hat anyja van.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Egy szóban ki tudom fejezni, mi ezzel a probléma: redundancia. A. Kisebbik gond az, hogy feleslegesen tárolod le ugyanazt n-szer. A nagyobbik, hogy mit csinálsz, ha változik a site layoutja?
- A hozzászóláshoz be kell jelentkezni
Már mi a francért lenne?
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
"A mai dinamikus weboldalak általában úgy működnek, hogy van írva index.php..." - Szerencsére ez erősen túlzó általánosítás.
- A hozzászóláshoz be kell jelentkezni
Hol van nagyz, amikor szükség van rá? :-)
- A hozzászóláshoz be kell jelentkezni
+1.
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
Nem ír, mert tisztában van saját nagyságával...
:)
- A hozzászóláshoz be kell jelentkezni
A 3. szinten emlitett CMS(szeru !@##$) dolgot hasznalok most napi szinten: https://www.youtube.com/watch?v=Afv_CjEmHXU
- A hozzászóláshoz be kell jelentkezni
"A mai dinamikus weboldalak általában úgy működnek [...]"
http://i1254.photobucket.com/albums/hh609/Spray_N_Pray1/No-meme-rage-fa…
(Off: Még hogy nem kell kép link...)
----------------
Lvl86 Troll, "hobbifejlesztő" - Think Wishfully™
- A hozzászóláshoz be kell jelentkezni
+1
- A hozzászóláshoz be kell jelentkezni
Kérlek menj inkább péknek.
- A hozzászóláshoz be kell jelentkezni
Verziókezelés miatt eleve nem jó ötlet, az fájlrendszeren működik a legjobban, ráadásul sokszor pont az van, hogy a rendszer megvan, csak cserélgetjük alatta a db-t, akkor a rendszer legyen már egyszerű forráskód fájlrendszeren, ne kelljen már pár bash alapparancson kívül semmi a beüzemeléséhez.
Amit fentebb említettek, hogy PL/SQL blokkokat használunk PHP helyett outputfinomításra az meg lehet picit még javítana is a performance-on, de messze nem annyit, amennyivel olcsóbb munkaórákat tekintve PHP programozókat megkérni, hogy dolgozzanak ennél sokkal olvashatóbb és megszokottabb módon struktúrált kódon.
Szóval neked mint keződnek azt javasolnám:
a forráskód legyen egyszerű mappaszerkezet, és adatbázisban csak azt tárold, ami amolyan "modellezhető adat" (táblák azonosítható sorral, semmi más, pl. userek, blogpostok, kommentek, etc.).
Később majd előkerül életedben valahol az MVC (model, view, controller), ott fogod majd megérteni, hogy a DB-be mi való, és nyilván pont ugyanazokhoz kell majd model class is.
- A hozzászóláshoz be kell jelentkezni
Édes istenem... De most komolyan pajtás, itt vagy HUP-on több mint 8 éve, ebből arra lehet következtetni, hogy nem vagy zöldfülű vagy, mégis olyan sületlenségeket _állítasz_, aminek köze nincs a valósághoz, pláne nem a profizmushoz.
--
http://envo.it
- A hozzászóláshoz be kell jelentkezni
Nem látott még IAS-t. Se. :-P
- A hozzászóláshoz be kell jelentkezni
Vagy vagy, vagy... Leginkább. De inkább nem.
--
http://envo.it
- A hozzászóláshoz be kell jelentkezni