SearchEngines.bg

Това е примерно съобщение за гост. Регистрирайте безплатен акаунт днес, за да станете потребител на SearchEngines.bg! След като влезете, ще можете да участвате в този сайт, като добавите свои собствени теми и публикации, както и да се свържете с други членове чрез вашата лична входяща кутия! Благодарим ви!

Използване на SESSION или заявки към DB

batzidi

New member
Привет на всички и за много години.
Имам следното питане: Кое ще натовари по - малко сървъра на сайта - като се обръщам всеки път към базата за да построя менюто или ако го дръпна цялото меню в един SESSION и при зареждане на дадена страница показвам SESSION-а? Като ориентир менюто е с 8-10 елемента(име на страницата, наименование показващо се на потребителя, евентуално title за href-а)
 
Re: Използване на SESSION или заявки към DB

Ако няма да го променяш, направи си метод, който ти го тегли от базата, коментирай тези редове и го пусни хардкоднато в същия метод.
Ако правиш промени, разкоментираш горните редове, генерира ти го наново и си заместваш хардкоднатия хтмл с ъпдейтнат такъв.

Но като цяло със сесия ми се струва тъпо.
8-10 елемента минават за някви хилядни от секундата. :)
 
Re: Използване на SESSION или заявки към DB

Ако няма да го променяш, направи си метод, който ти го тегли от базата, коментирай тези редове и го пусни хардкоднато в същия метод.
това не ми се струва никак професионално. не знам колко ще бъде ефективно.

@entwickler ме е изпреварил.
 
Re: Използване на SESSION или заявки към DB

това не ми се струва никак професионално. не знам колко ще бъде ефективно.

Максималното бързодействие ще се достигне, като няма нито база, нито нищо, просто стринг.
Аз не съм казал, че е професионално, но е бързо. :D

Факт обаче, че с тези 7-8 (!) елемента в менюто, дали ще са кеширани/хардкоднати/db query за всяка импресия... няма да има никаква видима разлика (освен ако query-то не е направено крайно куцо). :)

ps - някой би ли споделил как се прави нещо като кеширане, но без темплейт система.
ps2 - видях, APC функциите..
Ето и малко тестове:
http://www.webperformanceinc.com/library/reports/SugarAPC/index.html
 
Последно редактирано:
Re: Използване на SESSION или заявки към DB

Кеширане се прави много лесно:
1. имаш директория в която се съдържат кеш файловете
2. имаш клас, който:
2.1 Проверява кога е записан дадения кеш файл
2.2 Ако е по-стар от даден в settings момент - да го презаписва
2.3 ако е По-нов - да чете от него и да не ползва заявка или нещо друго.

Принципно се записват стойностите със serialize() и когато се четат с unserialize() :) така може да бичиш каквото ти душа сака :)
 
Re: Използване на SESSION или заявки към DB

Кеширане се прави много лесно:
1. имаш директория в която се съдържат кеш файловете
2. имаш клас, който:
2.1 Проверява кога е записан дадения кеш файл
2.2 Ако е по-стар от даден в settings момент - да го презаписва
2.3 ако е По-нов - да чете от него и да не ползва заявка или нещо друго.

В случая ще имаме използване на допълнително процесорно време за прочитане на файла. Идеята зад въпроса бе да се потърси вариант за най - малко изразходване на процесорно време, все пак спестена хилядна от изпълнението на скрипта може да се прансочи към друга функционалност нуждаеща се от това време.
До момента дадените коментиари са ми много полезни и ще ги взема под внимание.
Ако някой е имал свободно време зе тестове нека да сподели.
 
Re: Използване на SESSION или заявки към DB

А защо не дадеш конкретен пример и конкретен проблем, за да се помъчим да го решим най-рационално. Така малко на посоки стреляме. :)
Дай ако искаш и код някакъв, над който да размишляваме. :D
 
Re: Използване на SESSION или заявки към DB

Като проекти по които съм работил винаги се ползва заявка към db-то за менюто, но преди няколко дни ми попадна код, в който менюто се дърпаше от db и се зареждаше в SESSION. След това се ползваше този SESSION при зареждане на всяка страница. След това в кода открих, че след 1 час се unset-ва SESSION-а и се прави нова заявка към db-то за менюто(явно дали са правени промени по менюто).
И именно заради това се зачудих и реших да попитам.
Въпросният код не мога да пусна, заради декларацията за поверителност, съжалявам.
 
Re: Използване на SESSION или заявки към DB

php не ми е много ясен като платформа, но идеята ми е да сложиш менюто в паметта (не във файл). Някакъв вид memory cache.
Като потърсих стигнах до това http://www.ibm.com/developerworks/opensource/library/os-php-fastapps3/ ...
 
Re: Използване на SESSION или заявки към DB

Е ти _SESSION да не мислиш, че се пази в RAM-а? :)

Погледни си настройките на php-то. в 99% от случаите (по дефулт) сесията се пази във файл (/tmp). Това че е невидимо за тебе незначи, че не го записва някъде :)

Принципно, ако менюто не ти е дървовидно с 1000 елемента е все тая как се прави. Аз лично за сега менютата винаги са ми в сесията, защото те зависят от правата на потребителя, и проверката на правата за всяко меню е ресурсоемко, за да се прави на всяко зареждане на страницата. Но ме смятам, че случаят ти е такъв. Ако менюто е за всички еднакво и 10-20 елемента няма да има съществена разлика.
 

Горе