Symfony2: A gyorsítótár saját maga kezelése
Webügynökség » Digitális hírek » Symfony2: A gyorsítótár saját maga kezelése

Symfony2: A gyorsítótár saját maga kezelése

A gyorsítótár mindenhol jelen van a számítástechnikában és szerencsére máshol is. Enélkül a feldolgozási idő sokkal hosszabb lenne! Egy olyan időszakban, amikor minden, a névhez méltó keretrendszer gyorsítótár-rendszert használ, miért kellene magunknak kezelnünk a gyorsítótárat?

Gyorsítótár a Symfony2-ben

A Symfony2-ben egyszerűen beállíthat egy gyorsítótár-rendszert. Emellett, ha pontosak akarunk lenni, úgy tűnik, hogy a Symfony saját gyorsítótár-rendszerrel rendelkezik (app/cache/env/), és hogy szerverszinten is csatlakoztathatunk gyorsítótár-rendszert (Apache, IIS, …). Ez a gyorsítótár teljes mértékben kezelhető, a memória pedig ingatag. Amint a szerver újraindul, a szerver gyorsítótár törlődik.

Caching rendszerek

Milyen gyorsítótárazási rendszerek léteznek? Az emlékezetből három program jön elő rendszeresen.

  • XCache
  • memcached
  • APC
    Az APC most elavult PHP 5.4 óta, ezért nem javaslom, hogy próbálja meg csatlakoztatni.

Az én esetemben az XCache-t fogom használni. Az XCache telepítéséről szóló bejegyzésemet is megtalálod.

Miért kezelheti saját maga a gyorsítótárat?

Látok néhány megjegyzést, amelyek azt kérdezik: „Miért? ". Míg a Doctrine lehetővé teszi a gyorsítótár egyszerű használatát a módszerén keresztül useResultCache(használat, késleltetés, azonosító). A válaszom egyszerű: ingyenes kezeléseket végezni.

Egy kis példa, hogy ötleteket adjak. Tegyük fel, hogy gyorsítótárazok egy elemet egy adatbázisból. Ha módosítom ezt az entitást, a gyorsítótár nem frissül, amíg az adatok le nem járnak. A személyre szabott gyorsítótár-kezeléssel még azelőtt, hogy a gyorsítótár elérné a megadott időt, képes leszek újra beállítani az új adatokat és felülírni a régieket. Ez jelentős gazdálkodást igényel, de a teljesítménynövekedés jelentős lehet.

Symfony2 és hogyan kezelheti saját gyorsítótárát

Ezt a kis emlékeztető kódot ajánlom Önnek, hogy könnyen kezelje. Esetünkben ennek a lényegnek a funkciója egy SQL lekérdezés eredményét kívánja visszaadni.

Prototípus: függvény végrehajtása ($sql_query, $id = null, $delay = 3600);
beállításokat:

  1. _sqlkérdés megfelel a végrehajtani kívánt SQL lekérdezésnek.
  2. id a gyorsítótárazott adatokhoz kötött azonosító. Az x azonosítóhoz x tartalom lesz.
  3. késleltetés a gyorsítótár érvényességének maximális időtartama. Alapértelmezés szerint 3600 másodperc. Ez azt jelenti, hogy az adatok gyorsítótárazása után 3600 másodpercig elérhetők lesznek.
    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
    funkció kivégez ($sql_query, $id = null, $delay = 3600)
    {
    // Egy gyorsítótár-példányt deklarálunk
    $cacheDriver = új DoctrineCommonCacheXcacheCache();
    $eredmények = null;
    //Ha megadtak egy azonosítót, és a gyorsítótár-rendszer egy "x" azonosítóhoz tartalmaz adatokat
    if ($id!= null && $cacheDriver->contains($id)) {
    //Ezután a gyorsítótárazott adatokat egy "x" azonosítóhoz vesszük
    $eredmények = $cacheDriver->fetch($id);
    }
    //Ha nincs adat, abban az esetben, ha a gyorsítótárazott adat nullával egyenlő
    if ($eredmények == null) {
    //Lekérjük az adatokat
    $eredmények = $ ezt->container->get("tan")->getManager()->getRepository("NamespaceNameBundle:Entity")->mindent megtalál();
    //Ha van gyorsítótárazási azonosítónk
    if ($id!= null) {
    //Az adatokat x ID-re és y késleltetésre mentjük
    $cacheDriver->save($id, $eredmények, intval($delay));
    }
    }
    //Az eredményeket a jövőbeni kérések korlátozásával küldjük vissza
    visszatérés $eredmények;
    }

Nos, remélem, ez a feljegyzés segít. Hamarosan találkozunk, és köszönöm, hogy elolvastad ezt a bejegyzést!

★ ★ ★ ★ ★