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ą?
santrauka
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:
- _sqlužklausa atitinka SQL užklausą, kurią norite vykdyti.
- id yra identifikatorius, susietas su talpykloje esančiais duomenimis. Jei ID x, turėsite turinį x.
- 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ų.
12345678910111213141516171819202122232425262728funkcija 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" duomenysif ($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 nuliuiif ($ rezultatai == null) {//Mes gauname duomenis$rezultatai = $ tai->konteineris->gauti("doktrina")->getManager()->getRepository(„NamespaceNameBundle:Entity“)->rasti viską();//Jei turime talpyklos IDif ($id!= null) {//Išsaugome ID x ir delsos y duomenis$cacheDriver->save($id, $results, intval($delay));}}//Grąžiname rezultatus apribodami būsimas užklausasgrįžti $rezultatai;}
Na, tikiuosi, kad šis pranešimas jums padės. Iki pasimatymo ir ačiū, kad perskaitėte šį įrašą!