Witam, oto mała klasa obsługi bazy danych.
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;
$this->int_connect=mysql_connect($t_db_host,$t_db_user,$t_db_pass);
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_quert_count=count($t_query_res); $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)
if(time() - filemtime($t_cache_file_name) > $this->int_cache_time) {
$this->remove_cache($t_name);
$t_file=0;
}
# ===
}
if($t_file==0)
{
$t_query_res = $this->query($t_query);
$t_free_file = fopen($this->str_cache_dir . $t_name . '.qcache','w'); {
return $t_query_res;
}
}
else
{
$t_free_file = fopen($this->str_cache_dir . $t_name . '.qcache','r'); $this->int_last_quert_count = count($t_c_query); 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życiaJeż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 $wynik[0][0]. '<br/>'; # lub echo $wynik[$NUMER_REKORDU]['NAZWA_Z_BD']; echo $wynik[0][1]. '<br/>'; echo $wynik[1][0]. '<br/>'; echo $wynik[1][1]. '<br/>';
echo 'Czas ostatniego zapytania: ' . $baza->get_last_query_time() . '<br/>'; # zwraca 0 jeżeli zapytanie jest z cache echo 'Rekordów dla ostatniego zapytania: ' . $baza->get_last_query_count() . '<br />'; ?>