Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: cache - prosty przykład zastosowania
Forum PHP.pl > Forum > PHP
cinekz
Witam wszystkich i proszę o wyrozumiałość ;] Od dawna obijało mi się o uszy wyrażenie 'cache', ale nigdy dokładnie nie interesowałem się cóż to jest. Teraz wybiła godzina, kiedy muszę wam zadać to pytanie. Co to jest cache i jak takowe cudo zakodować? Prosiłbym o jak najprostszy przykład.
Pozdrawiam cinekz.
seaquest
A może byś tak poszukał sam?
cinekz
Albo ja jakiś ułomny jestem, albo nie za wiele informacji na ten temat. Google mi nic konkretnego nie powiedział. Tak samo szukarka na forum.
Moli
http://nospor.pl/
cinekz
@Moli: Zdaję sobie sprawę, że istnieje wiele gotowych bibliotek do cache'owania, ale ja pragnąłbym wiedzieć jak to ogólnie działa. Nie mam zamiaru patrzeć do źródeł, bo to nie ma większego sensu.
Moli
serialize i unserialize
cinekz
Czyli mniej więcej plan działania cache wygląda tak:
-sprawdzić, czy plik/wynik zapytania został zmodyfikowany
-jeżeli tak zrobić nowy plik z serializowaną zawartością
-jeżeli nie to odserializować skeszowany plik i zwrócić

Jeżeli się mylę, proszę mnie poprawić.
domis86
Raczej tak:
1. Kazdy kesz identyfikujemy po nazwie, ktora jest unikalna (np: "ranking-desc-page-2", "profil-usera-id-4234")
2. Z nazwy generujemy id kesza robiąc md5($nazwa) (czyli wyjdzie cos w tym stylu "a2cd34b5efdf346..").
3. Sprawdzamy, czy plik o nazwie [$id.txt] istnieje w katalogu cache, jesli tak to sprawdzamy czy zostal on zmodyfikawany $x sekund temu, gdzie $x to ustalony czas waznosci kesza. Jezeli ten kesz jest dobry to go odserializowujemy i dajemy do zmiennej $wynik oraz przechodzimy do punktu 5.
4. Jesli nie jest dobry to trzeba wygenereowac nowy wynik, dac go dop zmiennej $wynik i zapisac go zserializowanego do pliku o nazwie [$id.txt]
5. Zwracamy $wynik.


Tak wyglada mniej wiecej schemat funkcji ktora ma keszowac swoj wynik smile.gif
Jesli $x ustawimy na 999999999 to znaczy ze jest to kesz o "nieskonczej" dacie waznosci, i zeby go odnowic to musimy skasowac jego plik. Czasami jest to przydatne.

edit:
Nazwy mozna latwo generowac dla zapytań po prostu kopiujac do niej kod sql, i dajac na poczatek nazwe funkcji czy cos, np:

"getArticles - SELECT * FROM articles WHERE 1 ORDER BY updated_at"

wtedy stworza sie rozne pliki dla tej funkcji, jezeli ona czasam pobiera artykuly posortowane rosnaco, albo jesli jest paginacja.
cinekz
@domis86: Twoja wypowiedź bardzo mi pomogła. Teraz już po krótce rozumiem. Dzięki!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.