Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> cache, na jakiej zasadzie to dziala?
Diablos
post 18.12.2005, 21:54:46
Post #1





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Ejo.

Nie mam pojecia co to cache i na jakiej zasadzie dziala. Nie odsylajcie do wikipedii, googla lub search bo juz tam zagladalem. Czytalem o cache o tym ze np. zmniejsza ilosc zapytan... nie wykonuje wszystkiego czy cos w tym rodzaju. Sa to informacje jednak w ogole nie poukladane w mojej glowie... Jest wiele rzeczy, ktorych jeszcze nie zrobilem i nie umialbym narazie zrobic, ale mam jakis zalazek w glowie jak sie za to zabrac i pewnie metoda uczenia sie na wlasnych bledach bym zrobil. Cache to dla mnie czarna magia, nawet jakbym chcial to nie wiedzialbym jak sie za to zabrac, ba! nawet nie wiedzialbym jak z tego korzystac.
Go to the top of the page
+Quote Post
mike
post 18.12.2005, 21:58:23
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Diablos @ 2005-12-18 21:54:46)
(...) Cache to dla mnie czarna magia, nawet jakbym chcial to nie wiedzialbym jak sie za to zabrac, ba! nawet nie wiedzialbym jak z tego korzystac.

Zbyt mało wiedzy. Zbyt wielkie aspiracje.
IMO Zabierz się za coś co jest w Twoim zasięgu.

Przenoszę na Hydepark.
Go to the top of the page
+Quote Post
Diablos
post 18.12.2005, 22:18:48
Post #3





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


@mike_mech: tu nie chodzi o aspiracje, nie zrozumiales smile.gif Nie mowie ze chce to zrobic, chcialbym miec o tym pojecie ... dlatego pytam was? co to dokladnie jest i na jakiej zasadzie dziala... co sie dzieje z zapytaniami (czy tam danymi), czy sa one nieuzywane itd...

Na wlasnym przykladzie powiem o co mi chodzi:

- system szablonow

1. Wiem do czego sluzy, wiem na jakiej zasadzie dziala.
2. Nie odwazylbym sie go napisac, wole korzystac z dostepnych OPT, Smarty.
3. Mam o nim pojecie, wiem jak za niego sie zabrac, wiem ze pisanie takowego byloby dla mnie nowym doswiadczeniem, wiem ze nie mialby wielu funkcji.

Interesuje mnie praktycznie tylko 1 pkt. Nie chce narazie pisac cache...
Go to the top of the page
+Quote Post
mike
post 18.12.2005, 22:24:22
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Przykład cacheowanie danych z bazy danych.

1. Sprawdzasz czy jest plik z cache.
2. Jeśli jest pobierasz z niego dane.
3. Jesli nie ma wykonujesz zapytanie pobierające dane i zapisujesz do pliku.

Jeśli uzywasz tego jak trzeba, czyli na przykład do pobrania dancy, które zawsze są takie same. Na przykład dane o konfiguracji strony to zaoszczędzasz na ilości wykonywania zapytań. Bo po co każdy ma pytac o to samo?

A jak Ci się dane zmienily to kasujesz plik. Tak żeby pierwsza osoba która zobaczy strona "wygenerowała go".
Go to the top of the page
+Quote Post
dr_bonzo
post 18.12.2005, 22:27:43
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cache'owanie - to metody sluzace przyspieszaniu dzialania np. programow/aplikacji poprzez zapamietywanie _wynikow_ obliczen. Jest to takze przechowywanie najbardziej uzytwanych danych na nosniku o szybszym dostepie (np. pamiec cache procesora -- duzo szybsza od RAMu, i mimo ze jest jej malo to znacznie przyspiesza wykonywanie programow), itd.
Systemy szablonow: szablon trzeba przeparsowac, sprawdzic jego poprawnosc, wstawic do niego dane, itd. To zajmuje duzo (wartosc wzgledna) czasu. Jesli dana stronea bedzie wyswietlana wielorotnie to zamiast wykonywac te obliczenia za kazdym razem zapamietujemy np. tylko wyenerowany html i wyswietlamy go.

Ten post edytował dr_bonzo 18.12.2005, 22:36:48


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Diablos
post 18.12.2005, 22:55:19
Post #6





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Rozumiem ze zwiazane to jest z szybszym wyczytywaniem danym z plikow niz z bazy?
Go to the top of the page
+Quote Post
mike
post 18.12.2005, 22:58:48
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(Diablos @ 2005-12-18 22:55:19)
Rozumiem ze zwiazane to jest z szybszym wyczytywaniem danym z plikow niz z bazy?

Też. Ale przede wszystkim ze zmniejszeniem ilości wykonywanych operacji.
Go to the top of the page
+Quote Post
Slump
post 24.12.2005, 02:46:46
Post #8





Grupa: Zarejestrowani
Postów: 53
Pomógł: 0
Dołączył: 3.01.2004
Skąd: Iława

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


Tak samo db jak i plikow to sie tyczy smile.gif
Go to the top of the page
+Quote Post
Ociu
post 24.12.2005, 10:59:52
Post #9





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Prosty przykład
  1. <?php
  2. class cache {
  3. private static $flag;
  4.  
  5. public function __construct( $prefix ) {
  6. self::prefix( $prefix );
  7. }
  8.  
  9. private function prefix( $flag ) {
  10. self::$prefix = $flag;
  11. }
  12.  
  13. public function write($id, $data) {
  14. file_put_contents(THRORIN_CACHE.md5($id).'.cache', $data)
  15. }
  16.  
  17. public function read($id){
  18. return file_get_contents(THRORIN_CACHE.md5($id).'.cache');
  19. }
  20.  
  21. public function exists($id) {
  22. return file_exists(THRORIN_CACHE.md5($id).'cache');
  23. }
  24. }
  25. ?>


  1. <?php
  2. class DB extends cache {
  3. public function query( $sql ) {
  4. if($this->exists($sql)) {
  5. $q = $this->read($sql);
  6. # ...
  7. } else {
  8. $his->sql = mysql_query($sql);
  9. }
  10.  
  11. public function fetch() {
  12. if($this->exists($sql)) return true;
  13. # ...
  14. }
  15. }
  16. ?>


pozdrawiam
Go to the top of the page
+Quote Post
bela
post 24.12.2005, 12:30:53
Post #10


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Ociu, ten kod jest zły. Najpierw pomyśl co wklejasz, jeśli newbie się pyta.

1. Odwołujesz się do statycznych metod, które nie są statyczne.
2. W metodzie prefix, masz self::$prefix, a powinno być $this->flag.
3. $this->flag bez static.
4. Czemu Baza dziedziczy z Cache? Jak chcesz powinna implementować interfejs Cachable, czy jakiś taki.

Pewnie jeszcze czegoś bym się czepił, ale nie mam czasu ;]


--------------------
Go to the top of the page
+Quote Post
mike
post 24.12.2005, 12:54:17
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Co do przykładu ( kiedyś dawno napisałem z kumplem takie coś )
Sterownik Bazy danych
Jes tam mechanizm cache'owanych zapytań do bazy danych.
Jak chcesz to sobie zerknij.
Go to the top of the page
+Quote Post
Ociu
post 24.12.2005, 15:35:56
Post #12





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Bela to tylko przykłady pisane z palca. Napewno są błędy, część naukli polega na wyłapywaniu błędów w innych kodach.

pozdrawiam
Go to the top of the page
+Quote Post
bela
post 24.12.2005, 17:06:59
Post #13


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Ja to odbieram w inny sposób: pokazujesz komuś kod, mówisz że jest fajny i uczysz go tym samym złych rzeczy.
Dla to nie jest nauka, łapanie Twoich błędów. To zwykła rutyna. Za to Ty możesz wyciągnąć lub nie coś z tych wskazówek i pisać lepszy kod.
Rada na przyszłość? Nie pisz z palca ;]


--------------------
Go to the top of the page
+Quote Post
Ociu
post 24.12.2005, 18:26:07
Post #14





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Nie sztuką jest dostać gotowy kod i podziwiać jaki on jest fajny, ale sztuką jest dostać niegotowy kod, zrozumieć filozofie i wyłapać ew. błędy.

A jako, ze są święta: Masz rację
Go to the top of the page
+Quote Post
bela
post 25.12.2005, 02:03:24
Post #15


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


To nie było personalnie. Poza tym czasem lepiej dać pseudo-kod bądź kroki algorytmu w punktach. Ok, koniec OT.


--------------------
Go to the top of the page
+Quote Post
Diablos
post 25.12.2005, 12:43:56
Post #16





Grupa: Zarejestrowani
Postów: 165
Pomógł: 6
Dołączył: 17.06.2005

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


Hm, a na jakiej zasadzie cache sprawdza czy dane ktore chce pobrac juz sa zapisane do pliku? Rozumiem, ze przez sprawdzenie czy plik istnieje. Ale gdy dane w bazie ulegaja zmianie skrypt musi rozpoznac przeciez ze ta zmiana nastapila i ze trzeba generowac nowy plik. Wtedy czynnosci jest jeszcze wiecej pobranie z bazy, porownanie, utworzenie pliku, a sprawdzic czy dane w bazie zostaly zmienione przeciez trzeba zawsze.

Tzn. ja to tak rozumiem tongue.gif Napewno rozumiem zle bo gdyby tak bylo to cache nie mialoby sensu.
Go to the top of the page
+Quote Post
bela
post 25.12.2005, 12:51:32
Post #17


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


Wystarczy, że zmienisz zawartość pliku przy innym zapytaniu niż SELECT. Jednak zauważ, że rzadziej zmieniasz bazę niż pobierasz z niej dane.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 21.06.2025 - 09:41