Symfony2: Immaniġġja l-cache lilek innifsek
Aġenzija tal-web » Aħbarijiet diġitali » Symfony2: Immaniġġja l-cache lilek innifsek

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?

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:

  1. _sqlquery jikkorrispondi għall-mistoqsija SQL li tixtieq tesegwixxi.
  2. id huwa l-identifikatur marbut mad-dejta fil-cache. Għal ID x, ser ikollok kontenut x.
  3. 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.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    funzjoni 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 null
    if ($riżultati == null) {
    //Nirkupraw id-data
    $riżultati = $ dan-> kontenitur-> tikseb ("duttrina")->getManager()->getRepository("NamespaceNameBundle:Entità")-> findAll();
    //Jekk għandna ID caching
    if ($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 futuri
    ritorn $riżultati;
    }

Ukoll, nispera li dan il-memo jgħinek. Narawkom dalwaqt u grazzi talli qrajt din il-post!

★ ★ ★ ★ ★