Symfony2: välimuistin hallinta itse
Välimuisti on läsnä kaikkialla tietojenkäsittelyssä ja onneksi muualla. Ilman sitä käsittelyajat olisivat paljon pidempiä! Aikana, jolloin kaikki nimen arvoiset puitteet käyttävät välimuistijärjestelmää, miksi meidän pitäisi hallita välimuistia itse?
yhteenveto
Välimuisti Symfony2:ssa
Symfony2:ssa voit helposti määrittää välimuistijärjestelmän. Lisäksi, jos haluamme olla tarkkoja, näyttää siltä, että Symfonylla on oma välimuistijärjestelmä (app/cache/env/), ja että voimme myös kytkeä välimuistijärjestelmän palvelintasolla (Apache, IIS, ...). Tämä välimuisti on täysin hallittavissa ja muisti on haihtuvaa. Heti kun palvelin käynnistetään uudelleen, palvelimen välimuisti poistetaan.
Välimuistijärjestelmät
Mitä välimuistijärjestelmiä on olemassa? Kolme ohjelmaa tulee muistista säännöllisesti.
- XCache
- memcached
- APC
APC on nyt vanhentunut PHP 5.4:stä lähtien, joten en suosittele sen liittämistä.
Minun tapauksessani käytän XCachea. Löydät myös viestini XCachen asentamisesta.
Miksi hallita välimuistiasi itse
Näen muutaman kommentin saapuvan ja kysyvän "miksi? ". Vaikka Doctrine antaa sinun käyttää välimuistia helposti menetelmänsä kautta useResultCache(käyttö, viive, tunnus). Vastaukseni on yksinkertainen: tehdä ilmaisia hoitoja.
Pieni esimerkki ideoiden antamiseksi. Oletetaan, että tallennan kohteen välimuistiin tietokannasta. Jos muutan tätä entiteettiä, välimuistia ei päivitetä ennen kuin tiedot ovat vanhentuneet. Henkilökohtaisen välimuistinhallinnan avulla pystyn asettamaan uudet tiedot uudelleen ja korvaamaan vanhat jo ennen kuin välimuisti saavuttaa varatun ajan. Tämä vaatii merkittävää hallintaa, mutta suorituskyvyn lisäys voi olla huomattava.
Symfony2 ja oman välimuistin hallinta
Tarjoan sinulle tämän pienen muistiokoodin hallintaan helposti. Meidän tapauksessamme tämän Gist-funktion tarkoituksena on palauttaa SQL-kyselyn tulos.
Prototyyppi: funktion suoritus ($sql_query, $id = tyhjä, $viive = 3600);
asetukset:
- _sqlkysymys vastaa SQL-kyselyä, jonka haluat suorittaa.
- id on välimuistiin tallennettuun tietoon sidottu tunniste. Tunnuksella x sinulla on sisältö x.
- viivyttää on enimmäisaika, jonka annat välimuistin on voimassa. Oletusarvoisesti 3600 sekuntia. Tämä tarkoittaa, että tietosi välimuistiin tallentamisen jälkeen ne ovat käytettävissä 3600 sekuntia.
12345678910111213141516171819202122232425262728toiminto suorittaa ($sql_query, $id = tyhjä, $viive = 3600){// Ilmoitamme välimuistiinstanssin$cacheDriver = uusi DoctrineCommonCacheXcacheCache();$tulokset = nolla;//Jos syötettiin tunnus ja välimuistijärjestelmä sisältää tietoja tunnukselle "x"if ($id!= nolla && $cacheDriver->contains($id)) {//Sitten otamme välimuistissa olevat tiedot tunnukselle "x"$tulokset = $cacheDriver->fetch($id);}//Jos dataa ei ole, jos välimuistissa olevat tiedot ovat yhtä kuin nollaif ($tulosta == nolla) {//Haemme tiedot$tulokset = $ tätä->container->get("oppi")->getManager()->getRepository("NamespaceNameBundle:Entity")->findAll();//Jos meillä on välimuistitunnusif ($id!= nolla) {//Tallennamme tiedot tunnukselle x ja viiveelle y$välimuistiohjain->tallenna($id, $tulokset, intval($viive));}}//Palautamme tulokset rajoittamalla tulevia pyyntöjäpalata $tulokset;}
No, toivottavasti tämä muistio auttaa sinua. Nähdään pian ja kiitos kun luit tämän postauksen!