Symfony2: Immaniġġja l-cache lilek innifsek
Il-cache huwa preżenti kullimkien fl-informatika u fortunatament band'oħra. Mingħajrha, il-ħinijiet tal-ipproċessar ikunu ħafna itwal! Fi żmien meta l-oqfsa kollha li jistħoqqilhom l-isem jużaw sistema cache, għaliex ikollna bżonn niġġestixxu l-cache aħna?
sommarju
Cache f'Symfony2
F'Symfony2, tista' faċilment twaqqaf sistema ta' cache. Barra minn hekk, jekk ridna nkunu eżatti, jidher li Symfony għandu s-sistema cache tiegħu stess (app/cache/NS/), u li nistgħu wkoll daħħal sistema cache fil-livell tas-server (Apache, IIS, …). Din il-cache hija kompletament maniġġabbli u l-memorja hija volatili. Hekk kif is-server jerġa' jinbeda l-cache tas-server titħassar.
Sistemi ta' caching
X'sistemi ta' caching jeżistu? Mill-memorja, tliet programmi joħorġu regolarment.
- XCache
- memcached
- APC
APC issa deprezzat peress PHP 5.4, għalhekk ma nirrakkomandax li tipprova twaħħalha.
Fil-każ tiegħi, se nuża XCache. Tista 'ssib ukoll il-post tiegħi dwar kif tinstalla XCache.
Għaliex timmaniġġja l-cache tiegħek lilek innifsek
Nista' nara ftit kummenti deħlin u nistaqsi “għaliex? ". Filwaqt li d-Duttrina tippermettilek tuża faċilment il-cache permezz tal-metodu tagħha useResultCache (uża, dewmien, id). It-tweġiba tiegħi hija sempliċi: li tagħmel trattamenti b'xejn.
Eżempju żgħir biex jagħtik xi ideat. Ejja ngħidu li qed nagħmel caching oġġett minn database. Jekk timmodifika din l-entità, il-cache ma tiġix aġġornata sakemm id-dejta tkun skadiet. B'ġestjoni personalizzata tal-cache, inkun nista' anki qabel ma l-cache tilħaq il-ħin allokat biex terġa 'tissettja d-dejta l-ġdida u nikteb fuq l-qodma. Dan jeħtieġ ġestjoni sinifikanti, iżda l-kisbiet fil-prestazzjoni jistgħu jkunu sostanzjali.
Symfony2 u kif timmaniġġja l-cache tiegħek
Noffrulek dan il-kodiċi tal-memo żgħir biex tmexxi faċilment. Fil-każ tagħna, il-funzjoni ta 'dan Gist għandha l-għan li tirritorna r-riżultat ta' mistoqsija SQL.
Prototip: funzjoni tesegwixxi ($sql_query, $id = null, $delay = 3600);
Issettjar:
- _sqlquery jikkorrispondi għall-mistoqsija SQL li tixtieq tesegwixxi.
- id huwa l-identifikatur marbut mad-dejta fil-cache. Għal ID x, ser ikollok kontenut x.
- dewmien huwa l-ħin massimu li tagħti cache se jkun validu. B'mod awtomatiku, 3600 sekonda. Dan ifisser li wara l-caching tad-dejta tiegħek, din tkun disponibbli għal 3600 sekonda.
12345678910111213141516171819202122232425262728funzjoni tesegwixxi ($sql_query, $id = null, $delay = 3600){// Aħna niddikjaraw istanza ta' cache$cacheDriver = ġdid DoctrineCommonCacheXcacheCache();$riżultati = null;//Jekk iddaħħal ID u s-sistema tal-cache fiha data għal ID "x"if ($id!= null && $cacheDriver->fih ($id)) {// Imbagħad nieħdu d-dejta fil-cache għal ID "x"$riżultati = $cacheDriver->fetch($id);}//Jekk ma jkunx hemm dejta, f'każ li d-dejta fil-cache tkun ugwali għal nullif ($riżultati == null) {//Nirkupraw id-data$riżultati = $ dan-> kontenitur-> tikseb ("duttrina")->getManager()->getRepository("NamespaceNameBundle:Entità")-> findAll();//Jekk għandna ID cachingif ($id!= null) {// Aħna nissejvjaw id-dejta għal ID x u għal dewmien y$cacheDriver->salva ($id, $riżultati, intval($dewmien));}}//Aħna nirritornaw ir-riżultati billi nillimitaw it-talbiet futuriritorn $riżultati;}
Ukoll, nispera li dan il-memo jgħinek. Narawkom dalwaqt u grazzi talli qrajt din il-post!