Cache, [klasa] php5 |
Cache, [klasa] php5 |
5.07.2006, 18:32:33
Post
#1
|
|
Grupa: Moderatorzy Postów: 36 519 Pomógł: 6308 Dołączył: 27.12.2004 |
info
pobierz Prezentuje moją nową klasę Cache. Jak nazwa wskazuje klasa służy do zarządania cachem. Do cache'u można wkładac stringi, tablice, liczby, obiekty. Dany obiekt cache'u należy zawsze do jakiejś grupy lub do kilku grup. Gdy nie podamy grupy, obiekt trafi do grupy domyślnej. Obiekty w cache'u mają swoją żywotność, którą można regulować według własnych potrzeb. Obiekty moga byc wazne przez sekundy, minuty, godziny, dni itp... Dodatkowo można uzależnic obiekt od pliku zewnetrznego bądź też od kilku plikow. Cache straci wowczas swoją waznosc, gdy w danym pliku zewnetrznym pojawią sie jakies zmiany. Uzależnienie obiektu od kilku plikow moze byc przydatne, gdy np. tworzymy obiekt na podstawie kilku plikow xml. Nazwy obiektów mogą byc rownież hashowane. Ma to powiedzmy zastosowanie przy cacheowaniu zapytan. Zamiast nazwy "select * from tabela order by alamakota", pojawi nam sie ladny hash Czyszczenie cache odbywa sie na 4 sposoby: 1) wyczyszczenie calego cache'u 2) skasowanie wybranego(ych) obiektu(ow) 3) wyczyszczenie wybranej (ych) grupy 4) obiekt traci swoją ważność Zapraszam do używania, testowania i zgłaszania ewentualnych uwag/błędów. edit: począwszy od wersji 1.2 Cache dziala na zasadzie sterownikow I/O. Wraz z paczką dołączony jest sterownik działający na plikach oraz sterownik operujacy na pamieci, przez co obsluga Cache jest jeszcze szybsza. Dodana zostala suma kotrolna, mająca swoje zastosowanie szczegolnie przy operacjach na pamieci. edit (2006-09-08): No i jest Cache ver. 2.0 Czemu taki przeskok w numeracji? Ano odszedlem "troche" od sposobu konfiguracji cache. Wczesniej, aby moc dzialac na plikach i na pamieci trzeba bylo definiowac dwa obiekty Cache. Teraz mozliwe jest zdefiniowanie kilku sterownikow dla jednego obiektu Cache. Wprowadzilem przymus definiowania grup (domyslnie definiowana jest jedna grupa jesli komus przymus nie odpowiada ). Dzieki takiemu zastosowaniu mozna parametryzowac grupy, a co za tym idzie obiekty do nich przypisane. Mozna dla grupy okreslic jakie sterownik ma ja obslugiwac, jej czas zycia, sprawdzanie sumy, hashowanie i inne. Jesli w jakiejs chwili nam sie odmienia, ze configi zamiast na dysku maja byc zapisywane w pamieci, wystarczy wowczas tylko zmienic sterownik dla grupy, bez latania po wszystkich obiektach i zmieniania. Oczywiscie mozna zdefiniowac czas zycia obiektu w cache tylko dla niego, nadpisujac w ten sposob parametry grupy. Teraz by pobrac obiekt z cache trzeba okreslic do jakiej grupy nalezy. Wczesniej tego nie trzeba bylo robic. No ale jest to niezbedne by zaladowac chociazby odpowiedni sterownik do obslugi obiektu. Oczywiscie jak sie nie poda tego parametru, zaczytana zostanie grupa domyslna. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
26.01.2011, 19:53:14
Post
#2
|
|
Grupa: Zarejestrowani Postów: 22 Pomógł: 0 Dołączył: 26.05.2004 Skąd: Chełm Ostrzeżenie: (0%) |
Witam;
Właśnie próbuje ogarnąć tą klasę i prawdę mówiąc ciężko mi to idzie. Potrzebuję jakiegoś przykładu abym mógł się wzorować. Niech przykładem będzie Kod $query = " SELECT dane FROM tabela LIMIT 0, 5"; $result = mysql_query($query); echo '<div class="reg">'; while ($row = mysql_fetch_array($result)) { echo '<div class="reg_kont">'; echo '<p>'.$row['tresc'].'</p>'; echo '<span>przez '.$row[imie].'</span>'; echo '</div>'; } echo '</div>'; Jak widać prosty kod. Teraz próbuję zastosować omawianą klasę: Kod $val = $cache->Get("SELECT dane FROM tabela LIMIT 0, 5", "@queries"); if (is_null($val)){ $val = 'tutaj wyniki zapytania'; $cache->Put("SELECT dane FROM tabela LIMIT 0, 5", $val, "@queries"); echo 'Wlozono obiekt do cache: select * from tabela <br />'; } else { echo 'Pobrano obiekt z cache: select * from tabela : '.$val.' <br />'; } i nie wiem co dalej Jak powinien ostatecznie wyglądać kod z zastosowaniem cachu ? Proszę o pomoc, bo ja kombinuję już różnie od 2 godzin i żadnych efektów. Na dobrym przykładzie myślę, że będę w stanie dalej działać sam. Pozdrawiam -------------------- I pamiętaj lepsze jutro było wczoraj a więc porzuć wszelką nadzieję.
Tanie Winka - www.wina.tk |
|
|
Wersja Lo-Fi | Aktualny czas: 26.09.2024 - 21:10 |