Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> CacheSystem, Chciałbym abyście ocenili mój Cache System
Fifi209
post
Post #1





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


  1. <?php
  2. # autor: fifi209 (Fast)
  3.    # class: CacheSystem
  4.    # version: 1.02
  5.  
  6.    class CacheSystem {
  7.    
  8.        const COMPRESSION_NONE=0;
  9.        const COMPRESSION_BZIP2=1;
  10.        protected $dir;
  11.        private $compression;
  12.        
  13.        public function __construct($dir, $compression) {
  14.            if (@opendir($dir)) {
  15.                $this->dir = $dir;
  16.                switch ($compression) {
  17.                    case self::COMPRESSION_NONE:
  18.                        $this->compression = false;
  19.                        break;
  20.                    case self::COMPRESSION_BZIP2:
  21.                        $this->compression = true;
  22.                        break;
  23.                }
  24.            }else{
  25.                echo 'Podany katalog nie istnieje lub nie masz praw do jego otworzenia.';
  26.            }
  27.        }
  28.        
  29.        public function __get($cacheFile) {
  30.            if (file_exists($this->dir.'/'.$cacheFile.'.cache')) {
  31.                if ($this->compression == false) {
  32.                    return file_get_contents($this->dir.'/'.$cacheFile.'.cache');
  33.                }else{
  34.                    $handle = bzopen($this->dir.'/'.$cacheFile.'.cache', 'r');
  35.                    $text = bzread($handle, filesize($this->dir.'/'.$cacheFile.'.cache'));
  36.                    bzclose($handle);
  37.                    return $text;
  38.                }
  39.            }else{
  40.                return false;
  41.            }
  42.        }
  43.        
  44.        public function __set($cacheFile, $value) {
  45.            if ($this->compression == false) {
  46.                file_put_contents($this->dir.'/'.$cacheFile.'.cache', $value);
  47.                return true;
  48.            }else{
  49.                $handle = bzopen($this->dir.'/'.$cacheFile.'.cache', 'w');
  50.                bzwrite($handle, $value);
  51.                bzclose($handle);
  52.                return true;
  53.            }
  54.        }
  55.        
  56.        public function destroy($cacheFile) {
  57.            if ($this->$cacheFile != false) {
  58.                unlink($this->dir.'/'.$cacheFile.'.cache');
  59.                return true;
  60.            }else{
  61.                return false;
  62.            }
  63.        }
  64.        
  65.    }
  66. ?>


Napisałem ją dla siebie, ale może się komuś przyda. A teraz prosiłbym o jakieś uwagi dot. kodu, tj. co by można zmienić, zrobić inaczej.
Wydaje mi się, że jak na tą prostotę funkcjonalność jest wystarczająca. (przynajmniej dla mnie)

Użycie przykładowe:

Najpierw konstruktor:
  1. <?php
  2. $cache = new CacheSystem('cache', CacheSystem::COMPRESSION_NONE);
  3. ?>


Parametr pierwszy - ścieżka do folderu cache
Parametr drugi - używana kompresja (w tym wypadku brak, lecz "NONE" można zastąpić "BZIP2")

a) Dodawanie cache/Zmienianie jego wartości (konstruktor pomijam)
  1. <?php
  2. $cache->podstrona = 'Jakas wartosc';
  3. ?>


cool.gif Odczyt cache
  1. <?php
  2. echo $cache->podstrona;
  3. ?>


c) Usuwanie cache
  1. <?php
  2. $cache->destroy('podstrona');
  3. ?>


podstrona -> nazwa pliku cache smile.gif

Ten post edytował fifi209 14.06.2009, 22:54:36


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post

Posty w temacie
- fifi209   CacheSystem   13.06.2009, 22:58:36
- - Moli   Zły dział. Jest dział do ocen. A co jak będę chci...   13.06.2009, 23:06:03
|- - fifi209   Cytat(Moli @ 14.06.2009, 00:06:03 ) Z...   13.06.2009, 23:11:50
- - kamil_biela   osobiście wolalbym pobierać/ustawia...   14.06.2009, 00:50:17
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 01:50...   14.06.2009, 01:06:46
|- - kamil_biela   Cytat(fifi209 @ 14.06.2009, 02:06:46 ...   14.06.2009, 01:18:10
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 02:18...   14.06.2009, 10:01:44
- - kamil_biela   Kesz który wymaga połączenia z bazą danych? Oczywi...   14.06.2009, 11:27:08
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 12:27...   14.06.2009, 11:32:24
|- - kamil_biela   Cytat(fifi209 @ 14.06.2009, 12:32:24 ...   14.06.2009, 11:45:57
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 12:45...   14.06.2009, 11:50:12
|- - kamil_biela   Cytat(fifi209 @ 14.06.2009, 12:50:12 ...   14.06.2009, 11:54:43
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 12:54...   14.06.2009, 12:09:04
- - kamil_biela   Trochę sprzeczne jest ze sobą to co mówisz. Z jedn...   14.06.2009, 12:12:54
- - fifi209   Cytat(kamil_biela @ 14.06.2009, 13:12...   14.06.2009, 22:08:47
- - kamil_biela   setXMLPath, to IMO powinno być w konstruktorze, z ...   14.06.2009, 22:23:31
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 23:23...   14.06.2009, 22:34:21
|- - kamil_biela   Cytat(fifi209 @ 14.06.2009, 23:34:21 ...   14.06.2009, 22:43:26
|- - fifi209   Cytat(kamil_biela @ 14.06.2009, 23:43...   14.06.2009, 22:56:27
- - erix   Cache'owanie + kompresja = zuo Poza tym, nie ...   15.06.2009, 10:01:28


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: 21.08.2025 - 16:08