Symfony2: patiems tvarkykite talpyklą
Interneto agentūra » Skaitmeninės naujienos » Symfony2: patiems tvarkykite talpyklą

Symfony2: patiems tvarkykite talpyklą

Talpykla yra visur kompiuteriuose ir, laimei, kitur. Be jo apdorojimo laikas būtų daug ilgesnis! Tais laikais, kai visos vardo vertos sistemos naudoja talpyklos sistemą, kodėl mums patiems reikėtų tvarkyti talpyklą?

Talpykla Symfony2

„Symfony2“ galite lengvai nustatyti talpyklos sistemą. Be to, jei norime būti tikslūs, atrodo, kad Symfony turi savo talpyklos sistemą (app/cache/env/), ir kad taip pat galime prijungti talpyklos sistemą serverio lygiu (Apache, IIS, ...). Ši talpykla yra visiškai valdoma, o atmintis yra nepastovi. Kai tik serveris paleidžiamas iš naujo, serverio talpykla ištrinama.

Talpyklos sistemos

Kokios talpyklos sistemos egzistuoja? Iš atminties reguliariai atsiranda trys programos.

  • XCache
  • Prisiminė
  • APC
    APC dabar Pasenusios nuo PHP 5.4, todėl nerekomenduoju bandyti jo prijungti.

Mano atveju naudosiu XCache. Taip pat galite rasti mano įrašą apie tai, kaip įdiegti XCache.

Kam pačiam tvarkyti talpyklą

Matau, kad ateina keli komentarai ir klausia „kodėl? “. Nors Doktrina leidžia lengvai naudoti talpyklą naudojant savo metodą useResultCache (naudoti, delsa, id). Mano atsakymas paprastas: atlikti nemokamas procedūras.

Mažas pavyzdys, suteikiantis jums idėjų. Tarkime, kad talpykloje talpinu elementą iš duomenų bazės. Jei pakeisiu šį objektą, talpykla nebus atnaujinta, kol nepasibaigs duomenų galiojimo laikas. Naudodamas asmeninį talpyklos valdymą, galėsiu iš naujo nustatyti naujus duomenis ir perrašyti senuosius dar prieš tai, kai pasieks talpyklos laiką. Tam reikalingas didelis valdymas, tačiau našumas gali būti didelis.

Symfony2 ir kaip tvarkyti savo talpyklą

Siūlau jums šį nedidelį atmintinės kodą, kad galėtumėte lengvai valdyti. Mūsų atveju šios Gist funkcijos tikslas yra grąžinti SQL užklausos rezultatą.

Prototipas: funkcijos vykdymas ($sql_query, $id = null, $delay = 3600);
Nustatymai:

  1. _sqlužklausa atitinka SQL užklausą, kurią norite vykdyti.
  2. id yra identifikatorius, susietas su talpykloje esančiais duomenimis. Jei ID x, turėsite turinį x.
  3. delsimas yra maksimalus laikas, kurį suteikiate talpyklą. Pagal numatytuosius nustatymus 3600 sekundžių. Tai reiškia, kad po duomenų išsaugojimo talpykloje jie bus pasiekiami 3600 sekundžių.
    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
    funkcija vykdyti ($sql_query, $id = null, $delay = 3600)
    {
    // Mes deklaruojame talpyklos egzempliorių
    $cacheDriver = Naujas produktas DoctrineCommonCacheXcacheCache();
    $rezultatai = null;
    //Jei buvo įvestas ID ir talpyklos sistemoje yra ID "x" duomenys
    if ($id!= null && $cacheDriver->yra($id)) {
    //Tada paimame talpykloje saugomus duomenis ID "x"
    $rezultai = $cacheDriver->fetch($id);
    }
    //Jei duomenų nėra, jei talpykloje esantys duomenys yra lygūs nuliui
    if ($ rezultatai == null) {
    //Mes gauname duomenis
    $rezultatai = $ tai->konteineris->gauti("doktrina")->getManager()->getRepository(„NamespaceNameBundle:Entity“)->rasti viską();
    //Jei turime talpyklos ID
    if ($id!= null) {
    //Išsaugome ID x ir delsos y duomenis
    $cacheDriver->save($id, $results, intval($delay));
    }
    }
    //Grąžiname rezultatus apribodami būsimas užklausas
    grįžti $rezultatai;
    }

Na, tikiuosi, kad šis pranešimas jums padės. Iki pasimatymo ir ačiū, kad perskaitėte šį įrašą!

★ ★ ★ ★ ★