login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Overige scripts > Serverside (php5) caching

Serverside (php5) caching

Auteur: Wim - 27 mei 2007 - 13:50 - Gekeurd door: Stijn - Hits: 2958 - Aantal punten: (0 stemmen)



Benodigdheden:
1 directory met read & write access (standaard "cache"). Deze directory kan aangepast worden door de classe zo op te roepen:
$cache = new cache('DIRECTORY');

Als 'cache' een goede dir is, kan je de classe gewoon aanroepen:
$cache = new cache();

De classe werkt eigenlijk redelijk automatisch. Vanaf het bestand <dir>/FILE.cache bestaat, zal hij het uitlezen en de pagina sluiten. Anders zal de classe alle output opnemen, en deze uiteindelijk naar <dir>/FILE.class wegschrijven, zodat deze volgende keer uitgelezen kan worden.

Als de output bewerkt is (bvb nieuwe forumreactie), verwijder je -bij de update van de database- gewoon het desbetreffende .cache-bestand!

Oproepen met:
$cache = new cache('CACHE DIRECTORY');

Voorbeeldje:
  1. <?php
  2. require_once('cache.class.php');
  3. $cache = new cache();
  4.  
  5. $cache->start('index');
  6.  
  7. echo ('Welkom op mijn homepage!')
  8.  
  9. echo $cache->write();
  10. // ./cache/index.cache bevat nu "Welkom op mijn homepage!", en zal vanaf de 2de keer uitgelezen worden. Uiteraard heeft het geen performantie verschil bij enkel echo's zonder berekeningen!
  11. ?>


Voorbeeldje met templatepower: (mijn index.php)
  1. <?php
  2. require_once('cache.class.php');
  3. $cache = new cache();
  4.  
  5. $cache->start('index');
  6.  
  7. $tpl->assignInclude('content', 'txt/index.tpl');
  8.  
  9. $tpl->prepare();
  10.  
  11. $tpl->printToScreen();
  12.  
  13. echo $cache->write();
  14. ?>


Een bestand verwijderen kan met:
$cache->deleteCache('index'); //index staat voor de filename natuulrijk
Dit is eigenlijk gewoon een alias voor de (php) functie UNLINK, maar unlink is redelijk onbekend imo

Het script kan natuurlijk uitgebreid worden naar je eigen wensen voor je eigen website,
Plezier ermee!

Code:
  1. <?php
  2. class cache
  3. {
  4. // door Wim Mariën
  5. // http://www.gdx.be/
  6.  
  7.  
  8.  
  9. // VARS /
  10. // directory with .cache files
  11. private $dir = './cache/';
  12. private $filename = NULL;
  13.  
  14. protected $caching = false;
  15.  
  16.  
  17. // __construct /
  18. // PUBLIC (duh!)
  19. // cache::__construct()
  20. // AUTOMATIC
  21. public function __construct ($dir=NULL)
  22. {
  23. if(isset($dir))
  24. $this->dir = $dir;
  25.  
  26. if(substr($this->dir, -1) != '/')
  27. $this->dir .= '/';
  28. }
  29.  
  30.  
  31. // __destruct /
  32. // PUBLIC (duh!)
  33. // cache::__destruct()
  34. // AUTOMATIC
  35. public function __destruct ()
  36. {
  37. $this->dir = NULL;
  38. }
  39.  
  40.  
  41. // start /
  42. // PUBLIC
  43. // cache::start([string] filename)
  44. public function start ($filename)
  45. {
  46.  
  47. $this->filename = $filename;
  48. if(isset($filename) && !is_file($this->dir.$filename.'.cache'))
  49. {
  50. $this->caching = true;
  51. }
  52. else
  53. {
  54. echo $this->readCache($filename);
  55. exit();
  56. }
  57. }
  58.  
  59.  
  60. // write /
  61. // PUBLIC
  62. // cache::write ([string] filename)
  63. public function write ($file='')
  64. {
  65. if(empty($file) && !empty($this->filename))
  66. $file = $this->filename;
  67. elseif(empty($file) && empty($this->filename))
  68. return false;
  69.  
  70. if($this->caching)
  71. {
  72. $content = ob_get_contents();
  73. $this->updateCache($file, $content);
  74. return $content;
  75. }
  76. }
  77.  
  78.  
  79. // updateCache /
  80. // PRIVATE
  81. // cache::updateCache ([string] filename, [string] content)
  82. // write a .cache file (by update)
  83. private function updateCache ($file, $content)
  84. {
  85. $cachefile = fopen($this->dir.$file.'.cache', 'w');
  86. fwrite($cachefile, $content);
  87. fclose($cachefile);
  88. return true;
  89. }
  90.  
  91.  
  92. // readCache /
  93. // PUBLIC
  94. // cache::readCache([string] filename)
  95. // read a .cache file
  96. public function readCache($file)
  97. {
  98. $cachefile = fopen($this->dir.$file.'.cache', "r");
  99.  
  100. while(!feof($cachefile))
  101. {
  102. $content .= fgets($cachefile, 4096);
  103. }
  104. fclose($cachefile);
  105.  
  106. return $content;
  107. }
  108.  
  109. // deleteCache
  110. // PUBLIC
  111. // cache::deleteCache([string] filename)
  112. // delete a .cache file
  113. public function deleteCache($file)
  114. {
  115. if(unlink($this->dir.$file.'.cache'))
  116. return true;
  117. else
  118. return false;
  119. }
  120.  
  121. }
  122. ?>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (6)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.041s