Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

5 Stron V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> Cache, [klasa] php5
nospor
post 28.01.2011, 07:48:29
Post #41





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




A, to przez to hashowanie
Cała nazwa obiektu "folder/nazwa" leci przez hash w wyniku czego znika folder/. No, o tym nie pomyślałem


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

"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
@rtur
post 10.05.2011, 00:28:55
Post #42





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Bardzo fajna i pożyteczna klasa, dziękuje.

W pliku example.php znalazłem coś takiego:
  1. //Stworzenie grupy queries. Do niej beda wkladane wyniki zapytan. Id beda hashowane.
  2. //Obsluguje ja CacheFileDriver. Czas zycia 5 minut
  3. $cache->AddGroup('@queries', array(
  4. 'lifetime'=>300,
  5. 'driver'=>'fileDriver',
  6. 'hashid'=>true));

czy parametr 'lifetime' jest wymagany?

Już piszę o co chodzi.

Mam w bazie dane które będą się zmieniać na stronie czasowo, np raz dziennie (imieniny), wiec po co mi pobierać dane co 5 minut jak one są niezmienne? wystarczy że pobiorę dane 1 raz dziennie.

Mogę prosić o podpowiedź jak powinien wyglądać kod który raz dziennie przy wejściu pierwszego użytkownika po północy usunie cache @queries 'kalendarz', i założy nowe ?

taka sama opcja potrzebna mi na każdy poniedziałek roku.

Ten post edytował @rtur 10.05.2011, 06:28:34


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 06:32:12
Post #43





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




Jeśli chcesz kasować cache raz dziennie to za lifetime ustaw wartość 'day'
Jeśli chcesz kasować raz w miesiącu to ustaw 'month'

Co do każdego poniedziałku to póki co nie ma takiej opcji.


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

"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
@rtur
post 10.05.2011, 07:31:31
Post #44





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


A jak powinien wyglądać kod usuwający cache 'kalendarz' z grupy @queries?

czy wystarczy:

  1. require('Cache.class.php');
  2. require('drivers/CacheFileDriver.class.php');
  3.  
  4. try {
  5. //stworzenie obiektu cache.
  6. $cache = new Cache();
  7. $cache->AddDriver('fileDriver',new CacheFileDriver('Cache'));
  8.  
  9. //Stworzenie grupy queries. Do niej beda wkladane wyniki zapytan. Id beda hashowane.
  10. //Obsluguje ja CacheFileDriver. Czas zycia 5 minut
  11. $cache->AddGroup('@queries', array(
  12. 'lifetime'=>300,
  13. 'driver'=>'fileDriver',
  14. 'hashid'=>true));
  15.  
  16.  
  17. //Wyczyszczenie danego obiektu
  18. $cache->ClearObjects('kalendarz','@queries');
  19.  
  20. }
  21. catch (CacheException $e){
  22. echo '<span style="color:red">'.$e->getMessage().'</span>';
  23. }


tak sobie pomyślałem że może bym sobie to wrzucił w plik i wykonywał co określony czas z crona?

Ten post edytował @rtur 10.05.2011, 07:32:27


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 07:36:05
Post #45





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




W paczce masz podane kody do pobierania danych z cache. Gdy cache jest już nieaktualny to generujesz obiekt na nowo i wkładasz do cache. Wszystko to masz w paczce z przykładami. Musisz zrobić dokładnie tak samo jak tam jest podane.
Gdy ustawisz czas życia obiektu na 'day' to przy pobieraniu danych z cache dostaniesz NULL w przypadku gdy właśnie wskoczył nowy dzień. Postępowanie jest dokładnie takie samo jakbyś zamiast 'day' dał 300 sekund.

Cytat
tak sobie pomyślałem że może bym sobie to wrzucił w plik i wykonywał co określony czas z crona?
Jeśli chcesz tylko czyścić to czemu to ma służyć? Przecież dokładnie ten sam efekt będziesz miał przy normalnym użyciu kodu z paczki.
No chyba, że ty ten cron robisz na ten poniedziałek, którego ja nie obsługuję - to tak, wówczas to ma sens.


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

"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
@rtur
post 10.05.2011, 07:39:03
Post #46





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Właśnie o ten poniedziałek mi chodzi smile.gif



--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 07:41:08
Post #47





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




No to ten cron powinien załatwić sprawę smile.gif


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

"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
@rtur
post 10.05.2011, 07:51:44
Post #48





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


ale ten kod który podałem wcześniej jest wystarczający?

czy
  1. //Stworzenie grupy queries. Do niej beda wkladane wyniki zapytan. Id beda hashowane.
  2. //Obsluguje ja CacheFileDriver. Czas zycia 5 minut
  3. $cache->AddGroup('@queries', array(
  4. 'lifetime'=>300,
  5. 'driver'=>'fileDriver',
  6. 'hashid'=>true));

jest potrzebne do usuwania?


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 07:59:42
Post #49





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




No tak, jak nie zdefiniujesz grupy z której usuwasz, to poleci wyjątek, że takiej grupy nie ma.


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

"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
@rtur
post 10.05.2011, 08:12:16
Post #50





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


dzięki za podpowiedzi, tak się jeszcze zastanawiam jak działa ' 'lifetime'=>day, '
czy załóżmy jeśli cache zostanie utworzone dziś o 09:10 to jego czas wygasa o północy czy jutro 09:10?

bo jesli jutro 09:10 to też muszę je kasować cronem


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 08:14:16
Post #51





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




Nie. cache z opcją day kasuje się dokładnie następnego dnia, niezależnie o której był utworzony dnia wcześniejszego.
A dokładnie kasowany jest dnia następnego przy pierwszej próbie jego pobrania. Jeśli pierwsza próba pobrania będzie o północy to skasuje się o północy. Jeśli pierwsza próba pobrania będzie o 02:34 to skasowany zostanie o 02:34


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

"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
@rtur
post 10.05.2011, 08:29:25
Post #52





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Więc chyba pozostaje mi czyszczenie cache imieninowego z crona, przecież jak ktoś wywoła pierwszy raz skrypt jednego dnia o 08:05 a drugiego o 7:02 to o mu się pokaże zawartość wczorajszego cache bo od czasu powstania nie minie 24h.

Dziękuje jeszcze raz za dokładne i rzeczowe wytłumaczenie.


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 08:31:56
Post #53





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




NIe zrozumiałeś totalnie....
Przecież ci tłumaczę, że day nie oznacza 24h a oznacza nowy dzien.
Jeśli cache utworzy się o 08:05 a następnego dnia ktoś go wywoła o 07:02 to cache się wyczyści i wygeneruje na nowo z dniem aktualnym - będziesz więc miał to co chcesz.


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

"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
@rtur
post 10.05.2011, 10:16:58
Post #54





Grupa: Zarejestrowani
Postów: 254
Pomógł: 3
Dołączył: 23.02.2006

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


Faktycznie, nie zrozumiałem.

to jeszcze spytam o jedna rzecz:
czy jak tak zdefiniujemy grupę w ten sposób:
  1. $cache->AddGroup('@queries', array(
  2. 'driver'=>'fileDriver',
  3. 'hashid'=>true));

to bedzie ok, i moge potem w kodzie zdefiniowac czas 5 sek np tak ?

  1. $val = $cache->Get('zapytanie_mysql', '@queries', 5);


Przepraszam za tyle pytań ale dopiero zaczynam zabawę klasami.


--------------------
Artur
Go to the top of the page
+Quote Post
nospor
post 10.05.2011, 10:20:51
Post #55





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




Tak, gdy określisz czas w Get() to nadpisze on czas z grupy.
Gdy w grupie nie określisz czasu to zostanie przydzielony dla grupy czas domyślny.

Podsumowując: jest tak jak napisałeś smile.gif


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

"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
brayan.tr
post 12.06.2011, 22:18:09
Post #56





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 1.03.2011

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


Czy da się tak ustawić aby Cache ogóle nie było kasowane questionmark.gif Tzn tylko na życzenie. Np. podczas gdy dokonuje zmiany w bazie za pomocą kodu php = odpalić czyszczenie cache w przeciwnym wypadku cache nie jest w ogóle kasowane questionmark.gif

Jaki parametr ma przyjść lifetime questionmark.gif
Go to the top of the page
+Quote Post
nospor
post 13.06.2011, 07:18:19
Post #57





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




Ustaw za lifetime np. 5 lat. Podejrzewam, że przez ten czas sam kilka razy skasujesz na żądanie smile.gif


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

"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
adam882
post 28.12.2011, 09:27:50
Post #58





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


Bardzo fajna klasa smile.gif Mam jednak problem z grupą "@queries".
Czy da się za pomocą tej klasy zrobić tak, abym dodawał do cache tylko sam wynik zapytania mysql_query() ?
Go to the top of the page
+Quote Post
nospor
post 28.12.2011, 09:30:01
Post #59





Grupa: Moderatorzy
Postów: 36 440
Pomógł: 6289
Dołączył: 27.12.2004




yyyy, mysql_query() czy mysql_fetch_array()? Do cache zazwyczaj zapisuje się rekordy a nie wynik mysql_query.
Tutaj o tym pisałem:
http://forum.nospor.pl/projekty/cache/cach...nych-ft252.html


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

"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
adam882
post 28.12.2011, 09:48:57
Post #60





Grupa: Zarejestrowani
Postów: 289
Pomógł: 1
Dołączył: 2.11.2007

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


chyba źle sprecyzowałem pytanie, ale dzięki za właściwą odpowiedź i gratuluję napisania świetnej klasy smile.gif
Go to the top of the page
+Quote Post

5 Stron V  < 1 2 3 4 5 >
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: 28.03.2024 - 09:14