Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [ZF]Zend_Cache jak cachować rekordy powiązane
amii
post
Post #1





Grupa: Zarejestrowani
Postów: 728
Pomógł: 76
Dołączył: 12.06.2009

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


W Bootstrap.php inicjuję obiekt Cache_Manager, następnie w kontrolerze mam tak jak poniżej:
Co chce osiągnąć : przechować w pliku cache rekordy powiązane z training_instance
Pod spodem moje próby te zakomentowane, jeśli odkomentuję to tablica nadpisuje a dodanie własności title nic nie zmienia
Metoda getTraining to odpowiednik findParentRow

  1. if (false === ($menu_cache = $cache->load($cacheMenu))) {
  2. $m_trainings = new Application_Model_DbTable_TrainingInstance();
  3. $select = $m_trainings->select()->where('date_start > ?', new Zend_Db_Expr('CURDATE()'))
  4. ->where('free_places > ?', 0)
  5. ->where('closed = ?', 0)
  6. ->where('cancel = ?', 0)
  7. ->order('date_start ASC')
  8. ->limit(4);
  9. $menu_cache = $m_trainings->fetchAll($select);
  10. foreach ($menu_cache as $t_instance) {
  11. $menu_cache->title = $t_instance->getTraining()->title;
  12. //$menu_titles[]->title = $t_instance->getTraining()->title;
  13. }
  14. $cache->save($menu_cache, $cacheMenu);
  15. //$cache->save($menu_titles, $cacheMenu);
  16. }
  17.  
  18.  
  19. var_dump($menu_cache);


--------------------
gry flash online
Dobry hosting i tanie odnowienia domen firma: masternet.
Zarabianie bez wysiłku na domenach bez ruchu: prolink.
Go to the top of the page
+Quote Post
Fluke
post
Post #2





Grupa: Zarejestrowani
Postów: 247
Pomógł: 9
Dołączył: 20.09.2010
Skąd: Kraków

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


Witam,

Ja w swoich aplikacjach cache`wanie rozwiązałem w ten sposób:

Mam tabele: Kategorie, Newsy, Newsy_Kategorie. Przydało by się tutaj dać do cache rekordy z tabel: newsy oraz kategorie.

Dla kategori mam klasę: Logic_Category i w niej metodę getCategories(). Pobiera mi wszystkie kategorie z bazy danych i zapisuje do pliku cache. Gdy chcę wywołać metodę getCategoryById to pobiera kategorie za pomocą metody getCategories i szuka tej, której szukamy.

Teraz klasa: Logic_News. Korzysta z klasy Logic_Category i nie interesuje jej czy cache`uje dane czy nie, ma mieć kategorie. Pobiera dane z tabeli news_categories i pobiera je za pomocą klasy Logic_Category. Na samym końcu zapisuje dane do cache oraz dodaje "tagi": "category_id_1, category_id_20...".

Tak robię z wieloma tabelami i wszystko działa poprawnie.

Dodaj jeszcze, żeby zmienić Cache w news gdy zmieni się nazwa kategorii to będzie trzeba zastosować wzorzec Observer, który wykona metodę modyfikującą caach news`a.

Pozdrawiam.
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 Aktualny czas: 19.08.2025 - 14:59