wibble database / cache connection functions, make them repeatable, and set persistant DB connections as an option
This commit is contained in:
parent
63437d1e09
commit
008cc4253b
@ -276,6 +276,30 @@ class Database {
|
|||||||
* stored in the config file
|
* stored in the config file
|
||||||
*/
|
*/
|
||||||
public function Database() {
|
public function Database() {
|
||||||
|
$this->connect_cache();
|
||||||
|
$this->connect_db();
|
||||||
|
}
|
||||||
|
|
||||||
|
private function connect_cache() {
|
||||||
|
if(!is_null($this->cache)) return;
|
||||||
|
|
||||||
|
$matches = array();
|
||||||
|
if(defined("CACHE_DSN") && CACHE_DSN && preg_match("#(memcache|apc)://(.*)#", CACHE_DSN, $matches)) {
|
||||||
|
if($matches[1] == "memcache") {
|
||||||
|
$this->cache = new MemcacheCache($matches[2]);
|
||||||
|
}
|
||||||
|
else if($matches[1] == "apc") {
|
||||||
|
$this->cache = new APCCache($matches[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$this->cache = new NoCache();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private function connect_db() {
|
||||||
|
if(!is_null($this->db)) return;
|
||||||
|
|
||||||
# FIXME: detect ADODB URI, automatically translate PDO DSN
|
# FIXME: detect ADODB URI, automatically translate PDO DSN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -289,7 +313,7 @@ class Database {
|
|||||||
if(preg_match("/password=([^;]*)/", DATABASE_DSN, $matches)) $db_pass=$matches[1];
|
if(preg_match("/password=([^;]*)/", DATABASE_DSN, $matches)) $db_pass=$matches[1];
|
||||||
|
|
||||||
$db_params = array(
|
$db_params = array(
|
||||||
PDO::ATTR_PERSISTENT => true,
|
PDO::ATTR_PERSISTENT => DATABASE_KA,
|
||||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
||||||
);
|
);
|
||||||
if(defined("HIPHOP")) $this->db = new PDO(DATABASE_DSN, $db_user, $db_pass);
|
if(defined("HIPHOP")) $this->db = new PDO(DATABASE_DSN, $db_user, $db_pass);
|
||||||
@ -309,19 +333,6 @@ class Database {
|
|||||||
die('Unknown PDO driver: '.$db_proto);
|
die('Unknown PDO driver: '.$db_proto);
|
||||||
}
|
}
|
||||||
|
|
||||||
$matches = array();
|
|
||||||
if( defined("CACHE_DSN") && CACHE_DSN && preg_match("#(memcache|apc)://(.*)#", CACHE_DSN, $matches)) {
|
|
||||||
if($matches[1] == "memcache") {
|
|
||||||
$this->cache = new MemcacheCache($matches[2]);
|
|
||||||
}
|
|
||||||
else if($matches[1] == "apc") {
|
|
||||||
$this->cache = new APCCache($matches[2]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$this->cache = new NoCache();
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->engine->init($this->db);
|
$this->engine->init($this->db);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
function _d($name, $value) {if(!defined($name)) define($name, $value);}
|
function _d($name, $value) {if(!defined($name)) define($name, $value);}
|
||||||
_d("DATABASE_DSN", null); // string PDO database connection details
|
_d("DATABASE_DSN", null); // string PDO database connection details
|
||||||
|
_d("DATABASE_KA", true); // string Keep database connection alive
|
||||||
_d("CACHE_DSN", null); // string cache connection details
|
_d("CACHE_DSN", null); // string cache connection details
|
||||||
_d("DEBUG", false); // boolean print various debugging details
|
_d("DEBUG", false); // boolean print various debugging details
|
||||||
_d("DEBUG_SQL", false); // boolean dump SQL queries to data/sql.log
|
_d("DEBUG_SQL", false); // boolean dump SQL queries to data/sql.log
|
||||||
|
Loading…
x
Reference in New Issue
Block a user