![]() |
Smarty register_resource() - db:
Upravo sam napravio funkcije i jednu klasu koja omogućava čitanje smarty template iz baze podataka (u ovom slučaju mysql) i čini se prilično zgodno, naročito ako imate neki integrisan CMS, međutim ono o čemu razmišljam su performanse. Ne znam kako će se ponašati sa velikim brojem posetilaca.
Ja sam napravio neko interno keširanje tih template, znači ako na 3 mesta uradiš recimo $smarty->fetch ("db:intex.tpl") da ne čita sva 3 puta iz baze već drži u memoriji taj template do kraja izvršenja scripta. Da li je neko radio nešto slično pa ima iskustva sa performansama? |
[edit]Nisam odgovarao na konkretno pitanje, pa je moj post actually OT[/edit]
Off Topic: Ja radim keshiranje kad god pomislim da bi nesto moglo da ima uticaja na performanse, iako mi uvek kazu da se manem optimizacije dok se ne ukaze potreba za tim. Posto si verovatno pratio example u smarty manualu, onda u tabeli imas timestamp koji odgovara vremenu izmene templejta. U slucaju da aplikacija bude pod intenzivnim opterecenjem, sigurno ti nece predstavljati problem da ukljucis smartijevo interno keshiranje, koje ce posao obavljati verovatno brze nego tvoj interni kesh. Na osnovu datog timestamp-a smarty zna da li je template menjan ili ne, pa ce preuzeti novi template iz baze ili ce koristiti keshiranu verziju, respektivno. Dakle, dokle god ne budes imao intenzivno opterecenje na sajtu, ne moras se zamarati sa tim, a kad se ukaze potreba, upali keshiranje i resen problem. Off Topic: Oh, 256-ti post - bas lep i okrugao broj :D |
zextra: with all due respect, moje pitanje nije bilo kako da uradim, već je urađeno :) već da li ima neko iskustva sa performansama pri velikoj posećenosti web sajta. Znači : ja znam da će biti velika posećenost i radim to odmah, ne vredi da čekam da ustanovim nešto što već znam pa da prepravljam kasnije.
[edit]BTW, u smarty manual nema primera, bar ga ja nisam našao. Postoji samo štura informacija o strukturi i kakve callback funkcije treba da postoje[/edit] |
http://smarty.php.net/manual/en/template.resources.php - pri kraju strane imas primer.
Znao sam sta pitas, ali posto nisam imao iskustva sa performansama u datim uslovima, nisam mogao da ti dam konkretan odgovor - nadao sam se da smartijevo keshiranje moze da ti pomogne. Jesi probao da opteretis sajt nekim od komercijalnih programa za testiranje? |
E sorry, nisam ni citao online verziju manuala, citao sam neki bajati sto sam skinuo odavno.
Hajde kada pricas (ne znam zasto si stavio offtopic) mozda mozes i da spomenes neki od tih komercijalnih programa za testiranje, nisam imao dodira sa tim. |
Ne citam ni ja online verziju - imam lokalnu kopiju.
http://www.loadtestingtool.com/ WAPT (Web Application Testing) |
PHP kod - brz
Komunikacija sa bazom, fajl sistemom, spoljnim resursima preko web servisa... - sporo (u konktekstu sproje od čistog PHPa) To je manje više opšte pravilo koga se treba držati kad praviš nešto što će biti pod velikim opterećenje. Za konkretne brojke treba odraditi jednostavan test. Koristio sam rešenje gde se Smarty templatei čuvaju u bazi (kako bi jednostavno mogao biti editovan kroz admin). Sporije jeste, ali za ono za šta je meni trebalo (višejezičan sajt sa gomilom upita na bazu) nije donosilo primetno usporenje (jedan upit nije činio veliku razliku). PS: Pre ili kasnije ćeš morati da isključiš compile_chack tako da nećeš imati nikakvih problema jer ćeš uvek iznova koristiti kompajliranu verziju bez i jednog upita na bazu i tada će jedini overhead činiti sam Smarty. |
$smarty->compile_check mi je uvek isključen na live sajtovima, tako da uvek "trči" na prekompajliranim template-ovima. Što se tiče db: resource, ja uvek mogu da mu vraćam neki stari timestamp čak i ako je compile_check uključen.
Ono o čemu ja razmišljam je recimo 500 usera online od kojih svake sekunde otvore 50 novih strana, znači bar 50 qeury-ja u sekudni... 50 query-ja više nego da čita iz file: - to nije mala razlika. |
mozda sam ja malo glup (ili puno :D) ali ne razumem, da li ti drzis u bazi kompajlirane templejte ? Ili izvorne, kao sto bi meni bilo logicnije, jer se na njima vrse izmene...
Ako drzis u bazi izvornu verziju templejta (ne-kompajliranu) i iskljucen ti je compile_check, onda smarty ne bi trebao da ikada uradi i jedan upit na bazi (sem kod bas prvog pokretanja..), jer ce koristiiti svoje kompajlirane templejte za prikaz, koji i dalje idu kao fajlovi iz svog direktorijuma... ili nije tako? Sorry ako lupam nesto, ali nisam nikad radio sa smartijem na taj nacin, tako da su sva objasnjenja dobrodosla... |
Citat:
Kad je compile_check OFF ne bi trebalo da se desi ni jedan upit već da se koristi kompajlirana verzija sa diska tako da ovaj pristup donosi nepotreban overhead samo u vreme razvoja, ne i u produkcionom okruženju. |
Vreme je GMT +2. Trenutno vreme je 13:21. |
Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.