Cache.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. /**
  3. * MINZ - Copyright 2011 Marien Fressinaud
  4. * Sous licence AGPL3 <http://www.gnu.org/licenses/>
  5. */
  6. /**
  7. * La classe Cache permet de gérer facilement les pages en cache
  8. */
  9. class Cache {
  10. /**
  11. * $expire timestamp auquel expire le cache de $url
  12. */
  13. private $expire = 0;
  14. /**
  15. * $file est le nom du fichier de cache
  16. */
  17. private $file = '';
  18. /**
  19. * $enabled permet de déterminer si le cache est activé
  20. */
  21. private static $enabled = true;
  22. /**
  23. * Constructeur
  24. */
  25. public function __construct () {
  26. $this->_fileName ();
  27. $this->_expire ();
  28. }
  29. /**
  30. * Setteurs
  31. */
  32. public function _fileName () {
  33. $file = md5 (Request::getURI ());
  34. $this->file = CACHE_PATH . '/'.$file;
  35. }
  36. public function _expire () {
  37. if ($this->exist ()) {
  38. $this->expire = filemtime ($this->file)
  39. + Configuration::delayCache ();
  40. }
  41. }
  42. /**
  43. * Permet de savoir si le cache est activé
  44. * @return true si activé, false sinon
  45. */
  46. public static function isEnabled () {
  47. return Configuration::cacheEnabled () && self::$enabled;
  48. }
  49. /**
  50. * Active / désactive le cache
  51. */
  52. public static function switchOn () {
  53. self::$enabled = true;
  54. }
  55. public static function switchOff () {
  56. self::$enabled = false;
  57. }
  58. /**
  59. * Détermine si le cache de $url a expiré ou non
  60. * @return true si il a expiré, false sinon
  61. */
  62. public function expired () {
  63. return time () > $this->expire;
  64. }
  65. /**
  66. * Affiche le contenu du cache
  67. * @print le code html du cache
  68. */
  69. public function render () {
  70. if ($this->exist ()) {
  71. include ($this->file);
  72. }
  73. }
  74. /**
  75. * Enregistre $html en cache
  76. * @param $html le html à mettre en cache
  77. */
  78. public function cache ($html) {
  79. file_put_contents ($this->file, $html);
  80. }
  81. /**
  82. * Permet de savoir si le cache existence
  83. * @return true si il existe, false sinon
  84. */
  85. public function exist () {
  86. return file_exists ($this->file);
  87. }
  88. /**
  89. * Nettoie le cache en supprimant tous les fichiers
  90. */
  91. public static function clean () {
  92. $files = opendir (CACHE_PATH);
  93. while ($fic = readdir ($files)) {
  94. if ($fic != '.' && $fic != '..') {
  95. unlink (CACHE_PATH.'/'.$fic);
  96. }
  97. }
  98. closedir ($files);
  99. }
  100. }