login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zend_Cache

Offline Ibrahim - 07/04/2007 11:26
Avatar van IbrahimPHP expert Ik werk nu al een tijdje met het Zend Framework. Nu kom ik op de klasse Zend_Cache. Ik vraag me af, wat is cache nou precies en hoe verbind je caching met een database.

Dus dat hij een cache bijhoud totdat er nieuwe entries in de database worden gedaan.

  1. <?php
  2. if( nieuwe_entries )
  3. {
  4. // oude cache verwijderen en nieuwe cache aanmaken
  5. }
  6. else
  7. {
  8. // cache laden
  9. }

6 antwoorden

Gesponsorde links
Offline JBke - 07/04/2007 11:56 (laatste wijziging 07/04/2007 12:02)
Avatar van JBke PHP gevorderde Hoi,

Dat vroeg ik me ook af, ff googelen en voila

vervang in onderstaande code de lifeTime naar een controle functie op oude en nieuwe gegevens. Hopelijk kan je hier iets mee.

  1. <?php
  2. require_once 'Zend/Cache.php';
  3. $frontendOptions = array(
  4. 'lifeTime' => 7200, // cache levensduur van 2 uur
  5. 'automaticSerialization' => true
  6. );
  7. $backendOptions = array(
  8. 'cacheDir' => './tmp/' // Directory waar we de cache bestanden wegschrijven
  9. );
  10. // verkrijgen van een Zend_Cache_Core object
  11. $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);
  12. ?>


voor de rest ga je maar eens zien op onderstaande link, en je database hiervoor gebruiken is eerst uitlezen en dan opslaan in je tmp cache dir en dient die enkel upgedate te worden indien er een update query werd uitgevoerd op je database.

http://framewor...Zend_Cache

hopelijk kan je hiermee verder, laat even iets weten
Offline Ibrahim - 07/04/2007 12:06
Avatar van Ibrahim PHP expert ik snap de Zend_Cache wel natuurlijk 

ik snap alleen niet hoe je kunt controleren op nieuwe gegevens, koen (vage) zei dat het kon met revisies. Maar wat zijn revisies
Offline JBke - 07/04/2007 12:14 (laatste wijziging 07/04/2007 12:20)
Avatar van JBke PHP gevorderde revisie wil eigenlijk gewoon zeggen controle, herziening van je cache, dus gewoon een controle invoeren die controleerd of er data gewijzigd is in je cache.

http://www.site...&cat=4

gebruik je zend_db_adapter om te verbinden met je database als je zend_cache gebruikt?

ben er zelf nog niet zo lang mee bezig en gebruik het eigenlijk niet met een database maar wil het eigenlijk ook wel weten.

Grtz en laat me zeker de oplossing voor je probleem, ik ga misschien zelf eens werken aan een script darvoor.
Offline Ibrahim - 07/04/2007 12:25
Avatar van Ibrahim PHP expert Ik zal eens wat onderzoek ernaar doen. Als ik de oplossing vind, dan zal ik het hier eens posten
Offline JBke - 07/04/2007 12:30
Avatar van JBke PHP gevorderde zker doen, al vraag ik me af waarvoor je de cache dan gebruikt, je laad data op uit een database in je cache en wil dat die herladen word enkel als er nieuwe data in je database werd geschreven of gewijzigd??? Kan je dan niet gewoon eerst werken met een vergelijkende functie met je database en cache gegevens??

Je leest de data uit je cache en uit de database, indien niet gelijk dat update je je cache anders lees je uit je cache.

Maja dan is eigenlijk het nut van je cache een beetje verdwenen, niet? omdat je dan eigenlijk toch steeds elke keer uit je database gaat lezen en waarom dan nog wegschrijven naar een cache?

post zeker je oplossing zou ik zeggen of schrijf er een kleine aanvullende tut over.

Grtz.
Offline Ibrahim - 07/04/2007 12:51 (laatste wijziging 07/04/2007 13:50)
Avatar van Ibrahim PHP expert Ik heb de oplossing, maar niet in PHP. Ruby on Rails heeft een simpelere manier.

Jules (Fenrir) heeft het me uitgelegd, en hij zei ook dat ik me geen zorgen hoef te maken. Het is alleen bedoelt voor websites die per seconde veel queries te verwerken heeft.

(als iemand de oplossing in Ruby on Rails wilt, moet ie het maar vragen)

hier is de oplossing:

Je wilt bijvoorbeeld de actieve forumberichten cachen.
Je hebt de model Post/Topic/whatever

  1. Class Post
  2. ...


als zo'n topic dus veranderd wordt moet de cache opnieuw gegenereerd worden

In rails gaat dat zo:

  1. <% cache do %>
  2. // je code
  3. <% end %>


maar die cache moet dus verwijderd worden als een topic veranderd wordt
daarvoor maak je een cache sweeper

  1. class PostSweeper
  2. observe Post
  3.  
  4. def after_save(record)
  5. expire_page('active_messages')


die after_save wordt dus aangeroepen als een topic gesaved wordt
en die verwijdert de cache

Ik hoop dat het duidelijk is 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.243s