Symfony2: vahemälu ise haldamine
Veebiagentuur » Digitaalsed uudised » Symfony2: vahemälu ise haldamine

Symfony2: vahemälu ise haldamine

Vahemälu on arvutis kõikjal ja õnneks ka mujal. Ilma selleta oleks töötlemisaeg palju pikem! Miks peaksime ajal, mil kõik nime väärivad raamistikud kasutavad vahemälusüsteemi, vahemälu ise haldama?

Vahemälu Symfony2-s

Symfony2-s saate hõlpsasti seadistada vahemälusüsteemi. Pealegi, kui tahtsime olla täpne, siis tundub, et Symfonyl on oma vahemälusüsteem (app/cache/env/) ja et saame ühendada ka vahemälusüsteemi serveri tasemel (Apache, IIS jne). See vahemälu on täielikult hallatav ja mälu on muutlik. Niipea kui server taaskäivitatakse, kustutatakse serveri vahemälu.

Vahemälusüsteemid

Millised vahemälusüsteemid on olemas? Mälu järgi kerkib regulaarselt esile kolm programmi.

  • XCache
  • Mälestatud
  • APC
    APC on nüüd vananenud alates PHP 5.4-st, nii et ma ei soovita proovida seda ühendada.

Minu puhul kasutan XCache'i. Leiate ka minu postituse XCache'i installimise kohta.

Miks hallata vahemälu ise?

Ma näen, et mõned kommentaarid tulevad ja küsivad "miks? ". Kuigi Doctrine võimaldab teil oma meetodi kaudu vahemälu hõlpsalt kasutada useResultCache(kasutus, viivitus, id). Minu vastus on lihtne: teha tasuta ravi.

Väike näide ideede andmiseks. Oletame, et salvestan üksuse andmebaasist vahemällu. Kui ma seda olemit muudan, ei värskendata vahemälu enne, kui andmed on aegunud. Isikupärastatud vahemäluhalduse abil saan uued andmed uuesti seadistada ja vanad üle kirjutada juba enne, kui vahemälu saab määratud aja jooksul. See nõuab märkimisväärset juhtimist, kuid jõudluse kasv võib olla märkimisväärne.

Symfony2 ja kuidas oma vahemälu hallata

Pakun teile seda väikest memokoodi, mida saate hõlpsalt hallata. Meie puhul on selle Gisti funktsiooni eesmärk SQL-päringu tulemuse tagastamine.

Prototüüp: funktsiooni käivitamine ($sql_query, $id = null, $delay = 3600);
Seaded:

  1. _sqlpäringu vastab SQL-päringule, mida soovite täita.
  2. id on vahemällu salvestatud andmetega seotud identifikaator. ID x korral on teil sisu x.
  3. viivitus on maksimaalne vahemälu kehtivusaeg. Vaikimisi 3600 sekundit. See tähendab, et pärast andmete vahemällu salvestamist on need saadaval 3600 sekundit.
    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
    funktsioon täitma ($sql_query, $id = null, $delay = 3600)
    {
    // Me deklareerime vahemälu eksemplari
    $cacheDriver = uus DoctrineCommonCacheXcacheCache();
    $tulemused = tühjaks;
    //Kui sisestati ID ja vahemälusüsteem sisaldab andmeid ID "x" jaoks
    if ($id!= tühjaks && $cacheDriver->contains($id)) {
    //Seejärel võtame vahemällu salvestatud andmed ID "x" jaoks
    $tulemused = $cacheDriver->fetch($id);
    }
    //Kui andmeid pole, juhul kui vahemällu salvestatud andmed on nulliga võrdsed
    if ($tulemused == tühjaks) {
    //Toome andmed alla
    $tulemused = $ see->konteiner->hangi("doktriin")->getManager()->getRepository("NimeruumNameBundle:Entity")->leia kõik();
    //Kui meil on vahemällu salvestamise ID
    if ($id!= tühjaks) {
    //Salvestame andmed ID x ja viivituse y jaoks
    $cacheDriver->save($id, $results, intval($delay));
    }
    }
    //Tagastame tulemused, piirates tulevasi taotlusi
    tagasipöördumine $tulemused;
    }

Loodan, et see memo aitab teid. Kohtumiseni ja täname, et lugesite seda postitust!

★ ★ ★ ★ ★