1. PHP / Говнокод #7922

    +159

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    <?php
    	class Cache
    {
    		var $secret;
    		function create($timexpire, $data, $catalog="cache/"){
    			$filename = $catalog.$this->cache().".cache";
    			$data = "$timexpire\n$data";
    			$fo = fopen($filename, "w");
    			fwrite($fo, $data);
    			fclose($fo);
    		}
    		function read($catalog = "cache/"){
    			$filename = $catalog.$this->cache().".cache";
    			if(file_exists($filename)){
    				$content = file($filename);
    				if(trim($content[0]) < time()){
    					return 0;
    				}
    				unset($content[0]);
    				return ltrim(implode('', $content));
    			}
    			return 0;
    		}
    		function clean($catalog = "cache/"){
    			if($data = glob($catalog."*")){
    				foreach($data as $o){
    					if(is_dir($o)){
    						$this->clean($o);
    					}else{
    						unlink($o);
    					}
    				}
    			}
    			rmdir($catalog);
    		}
    		function cache(){
    				$filename = $_SERVER['REQUEST_URI'];
    				if(isset($_POST)){
    					$filename .= implode('',$_POST);
    				}
    				return md5($this->secret.$filename);
    		}
    }
    ?>

    Мой класс для кеширования.
    Писал давно.

    Запостил: snet, 21 Сентября 2011

    Комментарии (12) RSS

    • >var $secret;
      Тока никаму!!
      Ответить
    • $filename = $_SERVER['REQUEST_URI'];
      				if(isset($_POST)){
      					$filename .= implode('',$_POST);
      				}

      вот это да! чую, зверские имена файлов в кэше!
      и еще интересно, бывали ли в практике случаи, чтобы условие не выполнилось?
      Ответить
      • Гм. unset($_POST)?
        Ответить
        • кто в здравом уме такое напишет?
          Ответить
          • если есть if(isset($_POST)) наивно предполагать отсутствие unset($_POST)
            Ответить
            • Типа, для всякого ГК были причины. =)
              Ответить
          • А кто в здравом уме пишет код, выкладываемый сюда? =)
            Ответить
      • >вот это да! чую, зверские имена файлов в кэше!
        Имена всех кеш файлов в md5.
        Ответить
        • ну хоть до того додумались )
          Ответить
          • Ага. Я был удивлен что точно также и у других пехепехеров сделано.
            Т.к. перед тем как писать этот класс, я вообще не был в курсе как все должно работать.
            Знал только что такое кэширование бывает и все.
            Изобрел велосипед, короче говоря.
            Ответить
            • ну когда-то и я писал похожее... вот только кешировать POST не додумался
              Ответить
    • vanished
      Ответить

    Добавить комментарий