Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> Cache, [klasa] php5
nospor
post 5.07.2006, 18:32:33
Post #1





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
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 smile.gif

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 winksmiley.jpg ). 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.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
NetJaro
post 5.07.2006, 18:45:27
Post #2





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Gratulacje!

Ładny skrypt, podoba mi się cache plików zewnętrznych smile.gif
Na prawdę dobra robota, przyda się smile.gif

Dobra robota.
Go to the top of the page
+Quote Post
nospor
post 5.07.2006, 18:52:51
Post #3





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




Cytat
podoba mi się cache plików zewnętrznych
Tę opcję robiłem z myślą o obiektach tworzonych na podstawie plikow xml, w których trzymana jest konfiguracja aplikacji. Ale zapewne znajdą sie i inne zastosowania smile.gif

Zapomnialem dodac, iż klasa pluje wyjatkami CacheException, przez co można w aplikacji wyłapac wyjatki tej wlasnie klasy i odpowiednio reagowac. W przypadku mniejszych popierdulek, generowany jest NOTICE lub WARNING.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
orson
post 5.07.2006, 21:59:23
Post #4





Grupa: Zarejestrowani
Postów: 548
Pomógł: 2
Dołączył: 19.07.2003

Ostrzeżenie: (0%)
-----


witam ...

szkoda że tylko pliki a nie np. apc :/ szukam czegoś co łączyło by zmienne aplikacji (przechowywane w apc) ze zmiennymi sesji (standardowo SESSION) poprzez spójny interfejs ... ale nic ciekawego nie widzę więc chyba skończy się na tym że napisze sam ...

ale pomysł i wykonanie bardzo dobre

pozdrawiam


--------------------
Computer games don't affect kids; I mean if <span style="font-weight: bold;">Pac Man</span> affected us as kids,we would all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music.
Go to the top of the page
+Quote Post
bigZbig
post 14.07.2006, 14:33:50
Post #5





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


@nospor - pozwolilem sobie uruchomic ten przyklad prezentujacy mozliwosci Twojej klasy. Moje uwagi na goraco.

Zrezygnuj z ostrzeżen na rzecz wyjatkow. Jesli cos jest pierdolka to zwracaj true albo false, ale nie NOTICE lub WARNING. Jesli uzaleznie istnienie jakiegos elementu w cachu od pliku, a potem zapomne o tym i ten plik usune to zuytkownik zobaczy komunikaty, ktorych nie powinien widziec. Jesli bylyby to wyjatki to zawsze moglbym je jakos obsluzyc. Poza tym kiedy walniesz NOTICE to skrypt sie nie zatrzymuje i potem widze kolejne ostrzezenia tyle, ze tym razem generowane juz przez parser php.

Drugie pytanie. Czy probowales juz cachowac tym faktycznie jakis obiekt, a pobierac go potem z cachu? Przed pobraniem nie tworz zadnego innego obiektu danej klasy.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 14.07.2006, 15:09:02
Post #6





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




Cytat
Zrezygnuj z ostrzeżen na rzecz wyjatkow. Jesli cos jest pierdolka to zwracaj true albo false, ale nie NOTICE lub WARNING. Jesli uzaleznie istnienie jakiegos elementu w cachu od pliku, a potem zapomne o tym i ten plik usune to zuytkownik zobaczy komunikaty, ktorych nie powinien widziec. Jesli bylyby to wyjatki to zawsze moglbym je jakos obsluzyc. Poza tym kiedy walniesz NOTICE to skrypt sie nie zatrzymuje i potem widze kolejne ostrzezenia tyle, ze tym razem generowane juz przez parser php.
Widzisz, rozwazalem taka mozliwosc. ALe kiedys w javie uzywalem klasy, ktora z byle popierdulą, jechala mi wyjątkiem. Normalnie szlag mnie trafial, bo chcac powiedzmy wyczyscic jakąs grupę to klasa plula mi wyjatkami gdy tej grupy nie bylo. no paranoja. musialem wiec kazda banalna instrukcje brac w try i by mi sie aplikacja nie wykaszaniala. tak mnie to wnerwilo ze postanowilem popierduly walic noticami. Wiekszosc userow obsluguje takie komunikaty (np ja) i nic na ekran jak nie chce to sie nie wywala,a informacja czasami moze sie przydac.

Cytat
Czy probowales juz cachowac tym faktycznie jakis obiekt, a pobierac go potem z cachu? Przed pobraniem nie tworz zadnego innego obiektu danej klasy.
Za bardzo nie rozumiem oco ci chodzi. No przeciez w przykladach masz wkladanie do cache, pobieranie z cache, wiec chyba juz tego uzywalem winksmiley.jpg
Przyklady są banalne, ale nie chcialem sie rozpisywac.

edit: mowiac obiekt masz na mysli doslownie obiekt? Klasa nie cachuje obiektow jako takich tylko stringi, liczby i tablice

edit2: w przypadku co opisywales , mowiles ze lecialy ostrzezenia php. hmmm, tego mi sie nie udalo zrobic w tym co opisywales. jedyne jakie lecialy to odemnie. mozesz podac dokladniej sytuacje?

edit3: chyba pojde na kompromis z tymi noticami, bo faktycznie nie kazdy chce je miec. bedzie to konfigurowalne w klasie. kto bedzie chcial to mu bedzie plulo a jak nie bedzie chcial to nie bedzie plulo. domyslnie chyba ustawie by nie plulo


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigZbig
post 14.07.2006, 15:34:28
Post #7





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Odpalilem raz skrypt potem odswierzylem widok i zobaczylem NOTICE, ze nie ma pliku xml, a potem, ze jaks tam zmienna nie jest tablica. Nie napisze Ci dokladnie co to bylo bo nie mam w tej chwili dostepu do swojego kompa.

Co do rzucania wyjatkow z byle powodu. To faktycznie nie jest dobry pomysl. Ale pewne rzeczy mozesz obsluzyc w sposob domyslny. Jezeli chcesz usunac grupe ktorej nie ma to zwyczajnie powinienes zignorowac zadanie i dac true bo w koncu chodzi o to aby tej grupy nie bylo. I analogicznie w wielu innych przypadkach. Poza tym sa jeszcze true i false.

Masz jeszcze inne wyjscie. Flage debug. Jak true podajesz ostrzezenia jak false nic nie wyswietlasz.

Uzycie slowa obiekt mnie troszke zmylilo. Myslalem, ze serializujesz obiekty i w ten sposob je cachujesz, a przy odczycie deserializacja.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 14.07.2006, 15:52:15
Post #8





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




Cytat
Co do rzucania wyjatkow z byle powodu. To faktycznie nie jest dobry pomysl. Ale pewne rzeczy mozesz obsluzyc w sposob domyslny. Jezeli chcesz usunac grupe ktorej nie ma to zwyczajnie powinienes zignorowac zadanie i dac true bo w koncu chodzi o to aby tej grupy nie bylo. I analogicznie w wielu innych przypadkach. Poza tym sa jeszcze true i false.

No i ja ignoruje i dodatkowo rzucam NOTICE smile.gif

Cytat
Masz jeszcze inne wyjscie. Flage debug. Jak true podajesz ostrzezenia jak false nic nie wyswietlasz.

co do debug to edytowalem w poscie poprzednim ze dorobie wlasnie tę funkcjonalnosc

Cytat
Uzycie slowa obiekt mnie troszke zmylilo. Myslalem, ze serializujesz obiekty i w ten sposob je cachujesz, a przy odczycie deserializacja.
o, i jakbys testowal dokladniej to bys dostal wyjatka ze nie przyjmuje obiektow winksmiley.jpg
Pozatym to obiektow tak ladnie nie zserializuje i potem odserializuje. to nie tablice.

dzieki bigZbig za uwagi. Napewno niedlugo dorobie ten tryb debugowania a i sprobuje wylapac ten twoj niespodziewany notice. jesli cos ci jeszcze wpadnie to glowy to sie nie krepuj. wszystkie uwagi mile widziane


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigZbig
post 14.07.2006, 16:26:33
Post #9





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 14.07.2006, 16:52 ) *
Pozatym to obiektow tak ladnie nie zserializuje i potem odserializuje. to nie tablice.


Spotkalem sie juz kiedys z tym problemem, kiedy probowalem przechowywac obiekty w sesji. Generalnie wydaje mi sie, ze da sie cos takiego zrobic uzywajac malego trika. Ale sprawdze jeszcze.


W sumie taki eksperyment mi zadzialal. Zakladajac ze ponizsza tresc znajduje sie w pliku index.php za drugim razem wywolujemy go z parametrem index.php?action=read

  1. <?php
  2. class A
  3. {
  4. private $property;
  5.  
  6. public function __construct($property) {
  7. $this->property = $property;
  8. }
  9.  
  10. public function getProperty(){
  11. return $this->property;
  12. }
  13. }
  14.  
  15. if($_GET['action'] != 'read') {
  16. $_SESSION['foo'] = 'Hello World!';
  17. $_SESSION['counter']++;
  18.  
  19. $_SESSION['A'] = serialize(new A('Eureka!'));
  20. }
  21.  echo $_SESSION['foo'] . "<br />";
  22.  echo $_SESSION['counter'] . "<br />";
  23.  $A = unserialize($_SESSION['A']);
  24.  if($A instanceOf A) {
  25. echo 'Property: ' . $A->getProperty() . "<br />";
  26.  }
  27. ?>


W sumie to nie wiem czemu mi to wczesniej nie dzialalo?

-- edit --

Byc moze dlatego ze uzywalem autoloadera, ktory nie dolanczal odpowiedniej klasy.

Ten post edytował bigZbig 14.07.2006, 16:29:21


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 17.07.2006, 09:43:47
Post #10





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




hihi, http://pl.php.net/manual/pl/function.serialize.php
stary a glupi jak but... winksmiley.jpg nigdy nie serializowalem obiektow to nawet do glowy mi nie przyszlo ze mozna:
Cytat
When serializing objects, php will attempt to call the member function __sleep() prior to serialization. This is to allow the object to do any last minute clean-up, etc. prior to being serialized. Likewise, when the object is restored using unserialize() the __wakeup() member function is called.


No to niedlugo pojawi sie wersja z poziomem debugowania oraz cachewoaniem obiektow. bede tylko musial potescic te obiekty bo nigdy tego nie robilem


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigZbig
post 17.07.2006, 13:21:47
Post #11





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Moglbys do tego dopisac hendlery sesji i mialbys wlasne sesje z dodatkowymi rozbudowanymi mozliwosciami dotyczacymi kontroli trwalosci zmiennych. Oczywiscie uzycie Twojego - nazwijmy to cachera w roli sesji byloby opcja, a nie domyslnym przeznaczeniem.

Domyslnie zmienne zachowywaly by sie tak jak to zwykle bywa w przypadku sesji, ale udostepnil bys specjalne metody umozliwiajace ustawienie czasu trwalosci indywidualnie dla kazdej zmiennej, lub metody umozliwiajace uzaleznienie istnienia poszczegolnych zmiennych np. od istnienia danego pliku.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 17.07.2006, 15:05:57
Post #12





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




No dobra, no to jest kolejna wersja.
Poprawki:
- ustawienie poziomu raportowania bledow (wlasciwosc $errorLevel)
- mozliwosc wkladania obiektów typu object (wiem, smiesznie to brzmi). Przy wkladaniu obiektow, klasa wkladanego obiektu moze zawierac magiczne metody __sleep() oraz __wakeup(), ktore wykonuje dane rzeczy przed wlozeniem obiektu do cache i po pobraniu go. Należy pamietac by metoda __sleep() zwracala tablicę zmiennych, ktore mogą byc serializowane.

@bigZbig z tymi sesjami to dobrze mowisz smile.gif moze w przyszlosci...


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Foxer
post 20.07.2006, 12:20:57
Post #13





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 17.11.2003

Ostrzeżenie: (0%)
-----


Klasa wygląda bardzo fajnie i tak samo działa, ale zastanawia mnie jedna rzecz. Dlaczego czas żywotności obiektu w cache'u ustawiany jest jako parametr metody Get, a nie Put? Wydaje mi się, że żywotność powinna być określania w momencie wkładania do cache'u... podobnie jak z plikami cookies.

Ten post edytował Foxer 20.07.2006, 12:21:51
Go to the top of the page
+Quote Post
nospor
post 20.07.2006, 12:26:47
Post #14





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




@Foxer a Ty wiesz, ze jak ja pierwszy raz widzialem podobna klase w javie to tez mnie to dziwilo. Jednak gdy zacząlem jej uzywac na powaznie zauwazylem w tym sens.

1) przy put informacje o zywotnosci musialbym trzymac w pliku razem z obiektem
2) przy put nie bylbym w stanie zmienic zywotnosci obiektu w cache. wlozylem na tydzien i nijak tego zmienic, chyba zeby pisac dodatkowe metody lub czyscic caly cache. przy get ja to sobie moge w kazdej chwili regulowac
3) przypadek teoretyczny: wkladasz obiekt do cache. korzystac z niego bedą dwie akcje. jedna akcja zadowala sie odswierzeniem miesięcznym, druga akcja potrzebuje juz tygodniowego odswierzenia. przy put tego nie osiagniesz, chyba ze wrzucisz dwa obiekty dla kazdej akcji. wiem , ze taka sytuacja raczej nie ma praktycznego miejsca, ale teoretycznie jest smile.gif

pozatym wad przy get nie widze. jesli ty widzisz to prosze podaj, moze da sie cos usprawnic.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Foxer
post 20.07.2006, 12:42:25
Post #15





Grupa: Zarejestrowani
Postów: 34
Pomógł: 0
Dołączył: 17.11.2003

Ostrzeżenie: (0%)
-----


Wad również nie widzę, same zalety smile.gif. Poprostu patrząc "estetycznie" zdziwiłem się dlaczego okres ważności jest ustawiany przy Get. Oczywiście "na upartego" : P możnaby ustawiać ważność obiektu przy Put, zapisując tą informację w pliku razem z obiektem, dodać metodę która mogłaby edytować tą wartość, itd... ALE... byłoby to pozbawione sensu skoro Twój sposób jest prostrzy i szybszy winksmiley.jpg Przekonałeś mnie.
Go to the top of the page
+Quote Post
nospor
post 8.09.2006, 19:38:24
Post #16





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




No i jest ver. 1.2
Na sluszną uwagę nasty_psycho, wprowadzilem sterowniki operacji wejscia/wyjscia. Teraz kazdy moze sam
zdecydowac gdzie i w jaki sposob chce cacheowac dane bez ingerencji w kod klasy.
Na chwilę obecną istnieje moj domyslny sterownik operujacy na plikach. Niedlugo byc moze pojawi sie inny sterownik zapisujący dane w pamięci operacyjnej. Jak zapewne sie orientujecie przyspieszy to znacznie dzialanie cache.
Samo korzystanie z cache nie uleglo zmianie. W konstrukorze nalezy podac obiekt sterownika. Mozna jak dotej pory podac sciezke do katalogu cache, wowczas zostanie zaladowany domyslny sterownik.

Kolejną nowością jest suma kontrolna. Umozliwia ona zwalidowanie, czy obiekt zawarty w cache nie zostal ręcznie zmodyfikowany, przez co zawiera wadliwe dane.

edit:
Zgodnie z zapowiedzią pojawia się sterownik operujący na pamięci operacyjnej, przez co działanie cache jest jeszcze szybsze. Sterownik napisał nasty_psycho a ja go lekko poprawilem.
Oto przykladowy porownanie szybkosci dzialania na plikach i na pamieci:
Cytat
Porownanie szybkosci dzialania cache na plikach i na pamieci.
Czas podawany w sekundach
Pliki Pamiec
Inicjalizacja obiektow
0.00015783309936523 0.00056099891662598
Wlozenie obiektow do cache
0.086812973022461 0.014280080795288
Pobranie obiektow z cache
0.0086941719055176 0.0026149749755859
Wyczyszczenie calego cache
0.031248807907104 0.00012111663818359


Nowy sterownik, skrypt testujący oraz nowa lekko zmodyfikowana wersja Cache do pobrania wraz z paczką Cache_v1.2.1.zip.

Niedlugo planuje wydac kolejna wersje, umozliwiajaca konfigurowanie obiektow juz na poziome grup. Na poziomie grup bedzie mozna rowniez okreslic sterownik jakim dana grupa ma byc obslugiwana.

edit:
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 winksmiley.jpg ). 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.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
gkeb
post 10.09.2006, 13:56:51
Post #17





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 6.03.2004

Ostrzeżenie: (0%)
-----


Klasa fajna, nawet bardzo. Zastanawia mnie tylko dostepnosc u uslugodawcow modulu "shmop". chyba nie jest zbyt popularny. I przy okazji dodatkowe pytanie smile.gif jakby w tym miejscu (mam namysli jako sterownik) spisywala sie tabela w bazie danych typu MEMORY (SQLite albo MySQL)?
Go to the top of the page
+Quote Post
nospor
post 11.09.2006, 20:04:58
Post #18





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




Cytat
Zastanawia mnie tylko dostepnosc u uslugodawcow modulu "shmop"
Szczerze powiedziawszy to nie wiem. Ale nawet jak tego modulu nie bedzie, to Cache i tak bedzie dzialac na sterowniku dla plikow. Tak wiec nie ma problemu smile.gif

Cytat
I przy okazji dodatkowe pytanie jakby w tym miejscu (mam namysli jako sterownik) spisywala sie tabela w bazie danych typu MEMORY (SQLite albo MySQL)
O widzisz. I tu moglbys napisac taki sterownik i bysmy porownali wyniki. Sam jestem ciekaw jak w tej sytuacji by se poradzila tabelka MEMORY. smile.gif

edit:
POjawil sie maly blad... w zasadzie to nie blad, a niedoskonalosc php winksmiley.jpg
Jesli uruchomimy php5 w trybie kompatybilnosci z php4, to obiekty do funkcji nie są juz przekazywane przez referencje, jak to jest w samym php5.
No i to powoduje, iz sterowniki dodawane do Cache w trybie kompatybilnosci nie przechadzą w oryginale, lecz tworzone są ich kopie, a to z kolei powoduje blad przy wspolpracy ze sterownikiem CacheMemoryDriver.
Aby uniknac takich problemow dodalem pare '&' tu i tam smile.gif Delikatne zmiany dostepne w paczce ver2.0
Numerka nie zmieniam bo i zmiany banalne. zmiany dotycza tylko klasy Cache. Sterowniki są nieruszone


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
bigZbig
post 13.09.2006, 08:32:35
Post #19





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

Ostrzeżenie: (0%)
-----


A czy dodanie tych kilku "&" nie powoduje zwracania warningow kiedy skrypt uruchamiany jest na php5 bez trybu kompatybilnosci?
Osobiscie uwazam, ze uruchamianie php5 w wersji kompatybilnosci z php4 wprowadza jedynie wiecej zamieszania i moze powodowac bledy w dzialaniu skryptow. Dlatego lepszym rozwiazaniem jest uruchomienie na serwerze obu wersji php tj 4 i 5. Z tego tez wzgledu uwazam, ze jezeli juz chcesz zapewnic aby Twoj projekt dzialal rowniez na php5 z wlaczona kompatybilnoscia to napisz poprostu swoja klase w wersji dla php4.


--------------------
bigZbig (Zbigniew Heintze) | blog.heintze.pl
Go to the top of the page
+Quote Post
nospor
post 13.09.2006, 08:59:05
Post #20





Grupa: Moderatorzy
Postów: 34 103
Pomógł: 5650
Dołączył: 27.12.2004




Cytat
A czy dodanie tych kilku "&" nie powoduje zwracania warningow kiedy skrypt uruchamiany jest na php5 bez trybu kompatybilnosci?
Nie, nie ma to zadnych negatywnych skutkow. Dla czystego php5 jest poprostu przezroczysty ampersand

Cytat
Osobiscie uwazam, ze uruchamianie php5 w wersji kompatybilnosci z php4 wprowadza jedynie wiecej zamieszania i moze powodowac bledy w dzialaniu skryptow
Zgadzam sie z Tobą, ale niektorzy taki tryb maja wlaczony.... np. moj szef winksmiley.jpg

Wprowadzilem te &, gdyz nie mają one zlego wplywu na klase, niezaleznie od trybu.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

5 Stron V   1 2 3 > » 
Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.08.2018 - 13:57