Symfony2: Menaxhoni vetë cache
Ueb agjenci » Lajme dixhitale » Symfony2: Menaxhoni vetë cache

Symfony2: Menaxhoni vetë cache

Cache është i pranishëm kudo në kompjuter dhe për fat të mirë gjetkë. Pa të, koha e përpunimit do të ishte shumë më e gjatë! Në një kohë kur të gjitha kornizat e denja për emrin përdorin një sistem cache, pse do të na duhej ta menaxhonim vetë cache?

Cache në Symfony2

Në Symfony2, lehtë mund të konfiguroni një sistem cache. Përveç kësaj, nëse do të donim të ishim të saktë, duket se Symfony ka sistemin e vet të cache (app/cache/zili/), dhe se ne gjithashtu mund të lidhim një sistem cache në nivelin e serverit (Apache, IIS, ...). Ky cache është plotësisht i menaxhueshëm dhe memoria është e paqëndrueshme. Sapo serveri riniset, cache e serverit fshihet.

Sistemet e memorizimit

Çfarë sistemesh memorie ekzistojnë? Nga kujtesa, tre programe dalin rregullisht.

  • XCache
  • Memorizuar
  • APC
    APC është tani deprecated që nga PHP 5.4, kështu që unë nuk rekomandoj të provoni ta lidhni atë.

Në rastin tim, unë do të përdor XCache. Ju gjithashtu mund të gjeni postimin tim se si të instaloni XCache.

Pse ta menaxhoni vetë cache-in tuaj

Unë mund të shoh disa komente që vijnë dhe pyesin “pse? ". Ndërsa Doktrina ju lejon të përdorni me lehtësi cache-në nëpërmjet metodës së saj useResultCache (përdorim, vonesë, id). Përgjigja ime është e thjeshtë: të bëj trajtime falas.

Një shembull i vogël për t'ju dhënë disa ide. Le të themi se po ruaj një artikull nga një bazë të dhënash. Nëse e modifikoj këtë ent, cache nuk do të përditësohet derisa të dhënat të kenë skaduar. Me një menaxhim të personalizuar të cache-it, do të jem në gjendje që edhe para se cache të arrijë kohën e caktuar, të rivendos të dhënat e reja dhe të rishkruaj të vjetrat. Kjo kërkon menaxhim të konsiderueshëm, por përfitimet e performancës mund të jenë të konsiderueshme.

Symfony2 dhe si të menaxhoni cache-në tuaj

Unë ju ofroj këtë memo të vogël kodi për ta menaxhuar lehtësisht. Në rastin tonë, funksioni i këtij Gist synon të kthejë rezultatin e një pyetjeje SQL.

Prototipi: ekzekutimi i funksionit ($sql_query, $id = null, $vone = 3600);
Cilësimet:

  1. _sqlpyetje korrespondon me pyetjen SQL që dëshironi të ekzekutoni.
  2. id është identifikuesi i lidhur me të dhënat e memorizuara. Për një ID x, do të keni një përmbajtje x.
  3. vonesë është koha maksimale që jepni cache do të jetë e vlefshme. Si parazgjedhje, 3600 sekonda. Kjo do të thotë që pas ruajtjes së të dhënave tuaja në memorie, ato do të jenë të disponueshme për 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
    funksion zbatoj ($sql_query, $id = null, $vone = 3600)
    {
    // Ne deklarojmë një shembull të cache
    $cacheDriver = i ri DoctrineCommonCacheXcacheCache();
    $rezultatet = null;
    //Nëse është futur një ID dhe sistemi i memories përmban të dhëna për një ID "x"
    if ($id!= null && $cacheDriver->përmban ($id)) {
    //Më pas marrim të dhënat e ruajtura për një ID "x"
    $rezultat = $cacheDriver->fetch($id);
    }
    //Nëse nuk ka të dhëna, në rast se të dhënat e ruajtura janë të barabarta me null
    if ($results == null) {
    //Ne i marrim të dhënat
    $rezultatet = $ kjo-> enë-> merrni("doktrina")->getManager()->getRepository("NamespaceNameBundle:Entity")->findAll();
    //Nëse kemi një ID të memories
    if ($id!= null) {
    //Ne i ruajmë të dhënat për një ID x dhe për një vonesë y
    $cacheDriver->save($id, $rezultatet, intval($vonesa));
    }
    }
    //Ne i kthejmë rezultatet duke kufizuar kërkesat e ardhshme
    kthim $rezultatet;
    }

Epo, shpresoj që kjo memorandum t'ju ndihmojë. Shihemi së shpejti dhe faleminderit që lexuat këtë postim!

★ ★ ★ ★ ★