W klasie można ustawić okres ważności pliku cache.
Jeżeli ktoś ma pomysł co można(/należy) dodać lub poprawić to będę wdzięczny.
Nie wiem co mogę jeszcze napisać o tej klasie (bo nie ma w niej (jeszcze) nic ciekawego (?))
Klasa:
<?php //===== Vulturis Script ====================================== //= DataBase Class //===== By: ================================================== //= Eagle / Orzeł [ xeagle@o2.pl ] //===== Current Version: ===================================== //= 0.1 //===== Compatible With: ===================================== //= //===== Description: ========================================= //= //===== Additional Comments: ================================= //= //= //= //============================================================ class dbase { # Id połączenia z baza var $int_connect; # Katalog dla plikow cache var $str_cache_dir=''; # Waznosc pliku cache var $int_cache_time=0; # Czas wykonania ostatniego zapytania var $int_last_query_time=0; # Ilość rekordów ostatniego zapytania var $int_last_quert_count=0; //======================== //= Polaczenie z baza danych //======================== //======================== //= Kody bledow: //= @0 //= @1 - Brak polaczenia z serwerem //= @2 - Nie mozna wybrac bazy //= //======================== public function __construct($t_db_host,$t_db_user,$t_db_pass,$t_db_base,$t_cache_dir='',$t_cache_time=3000) { $this->str_cache_dir = $t_cache_dir; $this->int_cache_time = $t_cache_time; if(!$this->int_connect) { return 1; } { return 2; } } //======================== //======================== //= Zapytanie (bez cache) //======================== //======================== //= Zwraca tablice z wynikami zapytania //======================== public function query($t_query) { $t_query_time = $this->get_microtime(); { { $t_query_res[] = $t_row; } } $this->int_last_query_time = $this->get_microtime() - $t_query_time; return $t_query_res; } //======================== //======================== //= Zapytanie (z cache) //======================== //======================== //= Zwraca tablice z cache lub bezpośrednio z bazy //======================== public function query_cache($t_name, $t_query) { if($this->str_cache_dir=='') return $this->query($t_query); $t_file = 0; $t_cache_file_name = $this->str_cache_dir . $t_name . '.qcache'; { $t_file=1; #Sprawdzanie waznosci pliku cache (kasowanie lub nie) { $this->remove_cache($t_name); $t_file=0; } # === } if($t_file==0) { $t_query_res = $this->query($t_query); { return $t_query_res; } } else { return $t_c_query; } return $t_query_res; } //======================== //======================== //= Kasowanie pliku cache //======================== public function remove_cache($t_name) { $t_cache_file_name = $this->str_cache_dir . $t_name . '.qcache'; { } } //======================== //======================== //= Czas wykonywania ostatniego zapytania //======================== public function get_last_query_time() { return $this->int_last_query_time; } //======================== //======================== //= Ilość rekordów dla ostatniego zapytania //======================== public function get_last_query_count() { return $this->int_last_quert_count; } //======================== //======================== //= Czas (aby wiedzieć ile trwało zapytanie) //======================== private function get_microtime() { return ((float)$usec + (float)$sec); } //======================== //======================== //= Koniec połączenia z bazą //======================== public function close() { } //======================== } ?>
Sposób użycia
Jeżeli folder na cache nie zostanie podany to wszystkie wyniki dla zapytań będą pochodziły bezpośrednio z bazy a nie z cache.
<?php include ('class.php'); #host, uzytkownik, haslo, nazwa_bazy, folder_na_cache, waznosc_pliku_w_ms $baza = new dbase('localhost','login','haslo','nazwa bazy',['folder_na_cache/'],[3000]); $wynik_bezcache = $baza->query('SELECT * FROM `config`'); $wynik = $baza->query_cache('nazwa_pliku_cache','SELECT * FROM `config`'); echo 'Czas ostatniego zapytania: ' . $baza->get_last_query_time() . '<br/>'; # zwraca 0 jeżeli zapytanie jest z cache ?>