more quick querys - api, cache, log; qq supports now Q1 (get one row) and QP supports different parameter arrays for pg/mys

This commit is contained in:
Ulf Gebhardt 2014-01-20 02:15:44 +01:00
parent cf968381bd
commit b91117c927
11 changed files with 114 additions and 84 deletions

View File

@ -60,20 +60,7 @@ class api {
}
private static function getApiTree($group){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
if(\SYSTEM\system::isSystemDbInfoPG()){
$res = $con->query('SELECT * FROM '.\SYSTEM\DBD\system_api::NAME_PG .' WHERE "'.\SYSTEM\DBD\system_api::FIELD_GROUP.'" = '.$group.' ORDER BY "'.\SYSTEM\DBD\system_api::FIELD_ID.'"');
} else {
$res = $con->query('SELECT * FROM '.\SYSTEM\DBD\system_api::NAME_MYS.' WHERE `'.\SYSTEM\DBD\system_api::FIELD_GROUP.'` = '.$group.' ORDER BY '.\SYSTEM\DBD\system_api::FIELD_ID);
}
if(!$res){
throw new \SYSTEM\LOG\ERROR('Database Error '.pg_last_error($con));}
$result = array();
while($row = $res->next()){
$result[] = $row;}
$result = \SYSTEM\DBD\SYS_API_TREE::QA(array($group));
if(!isset($result) || !is_array($result) || count($result) <= 0){
throw new \SYSTEM\LOG\ERROR("Database Tree for Api empty - cannot proced! GROUP: ".$group);}

37
cache/cache.php vendored
View File

@ -4,42 +4,27 @@ namespace SYSTEM\CACHE;
class cache {
public static function get(\SYSTEM\DB\DBInfo $dbinfo, $cache_id, $ident){
$con = new \SYSTEM\DB\Connection($dbinfo);
$res = $con->prepare( 'checkCache',
'SELECT "data" FROM system.cache'.
' WHERE "CacheID" = $1 AND'.
' "Ident" = $2;',
array($cache_id,$ident));
if(!($result = $res->next())){
public static function get($cache_id, $ident){
$result = \SYSTEM\DBD\SYS_CACHE_CHECK::Q1(array($cache_id,$ident));
if(!$result){
return NULL;}
return pg_unescape_bytea($result['data']);
}
public static function put(\SYSTEM\DB\DBInfo $dbinfo, $cache_id, $ident, $data, $fail_on_exist = false){
if((self::get($dbinfo,$cache_id,$ident) != NULL)){
public static function put($cache_id, $ident, $data, $fail_on_exist = false){
if((self::get($cache_id,$ident) != NULL)){
if($fail_on_exist){
return false;}
self::del($dbinfo, $cache_id, $ident);
self::del($cache_id, $ident);
}
$con = new \SYSTEM\DB\Connection($dbinfo);
$res = $con->prepare( 'insertCache',
'INSERT INTO system.cache ("CacheID", "Ident", "data")'.
' VALUES ($1,$2,$3);',
array($cache_id,$ident,pg_escape_bytea($data)));
return $res->next() ? $data : NULL;
$result = \SYSTEM\DBD\SYS_CACHE_PUT::Q1(array($cache_id,$ident,$data));
return $result ? $data : NULL;
}
public static function del(\SYSTEM\DB\DBInfo $dbinfo, $cache_id, $ident){
$con = new \SYSTEM\DB\Connection($dbinfo);
$res = $con->prepare( 'deleteCache',
'DELETE FROM system.cache'.
' WHERE "CacheID" = $1 AND'.
' "Ident" = $2;',
array($cache_id,$ident));
return $res->next() ? true : false;
public static function del($cache_id, $ident){
$result = \SYSTEM\DBD\SYS_CACHE_DELETE::Q1(array($cache_id,$ident));
return $result ? true : false;
}
}

View File

@ -2,7 +2,7 @@
namespace SYSTEM\DB;
class QP {
public static function QQ($params){
public static function QQ($params,$params_mys = null){
$query = static::query();
$con = new \SYSTEM\DB\Connection($query->dbinfo);
if($is_pg = \SYSTEM\system::isSystemDbInfoPG() && $query->dbinfo){
@ -10,17 +10,20 @@ class QP {
if($is_pg){
return $con->prepare($query->name,$query->sql_pg,$params);
} else {
return $con->prepare($query->name,$query->sql_mys,$params);}
return $con->prepare($query->name,$query->sql_mys,$params_mys ? $params_mys : $params);}
}
public static function QA($params){
$res = self::QQ($params);
public static function QA($params,$params_mys = null){
$res = self::QQ($params,$params_mys);
$result = array();
while($row = $res->next()){
$result[] = $row;}
return $result;
}
public static function Q1($params,$params_mys = null){
return self::QQ($params,$params_mys)->next();}
//override this
protected static function query(){
throw new \SYSTEM\LOG\ERROR('query function of your QQ Object not overritten!');}

View File

@ -21,6 +21,9 @@ class QQ {
return $result;
}
public static function Q1(){
return self::QQ()->next();}
//override this
protected static function query(){
throw new \SYSTEM\LOG\ERROR('query function of your QQ Object not overritten!');}

15
dbd/qq/SYS_API_TREE.php Normal file
View File

@ -0,0 +1,15 @@
<?php
namespace SYSTEM\DBD;
class SYS_API_TREE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT * FROM '.\SYSTEM\DBD\system_api::NAME_PG
.' WHERE "'.\SYSTEM\DBD\system_api::FIELD_GROUP.'" = $1'
.' ORDER BY "'.\SYSTEM\DBD\system_api::FIELD_ID.'"',
//mys
'SELECT * FROM '.\SYSTEM\DBD\system_api::NAME_MYS
.' WHERE `'.\SYSTEM\DBD\system_api::FIELD_GROUP.'` = ?'
.' ORDER BY '.\SYSTEM\DBD\system_api::FIELD_ID
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_CACHE_CHECK extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'SELECT "data" FROM system.cache'.
' WHERE "CacheID" = $1 AND'.
' "Ident" = $2;'
//mys
);}}

View File

@ -0,0 +1,12 @@
<?php
namespace SYSTEM\DBD;
class SYS_CACHE_DELETE extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'DELETE FROM system.cache'.
' WHERE "CacheID" = $1 AND'.
' "Ident" = $2;'
//mys
);}}

11
dbd/qq/SYS_CACHE_PUT.php Normal file
View File

@ -0,0 +1,11 @@
<?php
namespace SYSTEM\DBD;
class SYS_CACHE_PUT extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'INSERT INTO system.cache ("CacheID", "Ident", "data")'.
' VALUES ($1,$2,$3);'
//mys
);}}

30
dbd/qq/SYS_LOG_INSERT.php Normal file
View File

@ -0,0 +1,30 @@
<?php
namespace SYSTEM\DBD;
class SYS_LOG_INSERT extends \SYSTEM\DB\QP {
protected static function query(){
return new \SYSTEM\DB\QQuery(get_class(),
//pg
'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_PG.
'("'.\SYSTEM\DBD\system_log::FIELD_CLASS.'","'.\SYSTEM\DBD\system_log::FIELD_MESSAGE.'","'.
\SYSTEM\DBD\system_log::FIELD_CODE.'","'.\SYSTEM\DBD\system_log::FIELD_FILE.'","'.
\SYSTEM\DBD\system_log::FIELD_LINE.'","'.\SYSTEM\DBD\system_log::FIELD_TRACE.'","'.
\SYSTEM\DBD\system_log::FIELD_IP.'","'.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.'","'.
\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.'","'.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.'","'.
\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.'","'.\SYSTEM\DBD\system_log::FIELD_POST.'","'.
\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.'","'.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.'","'.
\SYSTEM\DBD\system_log::FIELD_USER.'","'.\SYSTEM\DBD\system_log::FIELD_THROWN.'")'.
'VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16);',
//mys
'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_MYS.
'('.\SYSTEM\DBD\system_log::FIELD_CLASS.','.\SYSTEM\DBD\system_log::FIELD_MESSAGE.','.
\SYSTEM\DBD\system_log::FIELD_CODE.','.\SYSTEM\DBD\system_log::FIELD_FILE.','.
\SYSTEM\DBD\system_log::FIELD_LINE.','.\SYSTEM\DBD\system_log::FIELD_TRACE.','.
\SYSTEM\DBD\system_log::FIELD_IP.','.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.','.
\SYSTEM\DBD\system_log::FIELD_TIME.','.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.','.
\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.','.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.','.
\SYSTEM\DBD\system_log::FIELD_POST.','.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.','.
\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.','.\SYSTEM\DBD\system_log::FIELD_USER.','.
\SYSTEM\DBD\system_log::FIELD_THROWN.')'.
'VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);'
);}}

View File

@ -9,44 +9,17 @@ class error_handler_dbwriter extends \SYSTEM\LOG\error_handler {
try{
if(\property_exists(get_class($E), 'logged') && $E->logged){
return false;} //alrdy logged(this prevents proper thrown value for every system exception)
if(\SYSTEM\system::isSystemDbInfoPG()){
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
$con->prepare( 'sysLogStmt', 'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_PG.
'("'.\SYSTEM\DBD\system_log::FIELD_CLASS.'","'.\SYSTEM\DBD\system_log::FIELD_MESSAGE.'","'.
\SYSTEM\DBD\system_log::FIELD_CODE.'","'.\SYSTEM\DBD\system_log::FIELD_FILE.'","'.
\SYSTEM\DBD\system_log::FIELD_LINE.'","'.\SYSTEM\DBD\system_log::FIELD_TRACE.'","'.
\SYSTEM\DBD\system_log::FIELD_IP.'","'.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.'","'.
\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.'","'.\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.'","'.
\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.'","'.\SYSTEM\DBD\system_log::FIELD_POST.'","'.
\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.'","'.\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.'","'.
\SYSTEM\DBD\system_log::FIELD_USER.'","'.\SYSTEM\DBD\system_log::FIELD_THROWN.'")'.
'VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16);',
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,$_SERVER['HTTP_USER_AGENT'],
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null, $thrown ? 1 : 0));
} else {
$con = new \SYSTEM\DB\Connection(\SYSTEM\system::getSystemDBInfo());
$con->prepare( 'sysLogStmt', 'INSERT INTO '.\SYSTEM\DBD\system_log::NAME_MYS.
'('.\SYSTEM\DBD\system_log::FIELD_CLASS.','.\SYSTEM\DBD\system_log::FIELD_MESSAGE.','.
\SYSTEM\DBD\system_log::FIELD_CODE.','.\SYSTEM\DBD\system_log::FIELD_FILE.','.
\SYSTEM\DBD\system_log::FIELD_LINE.','.\SYSTEM\DBD\system_log::FIELD_TRACE.','.
\SYSTEM\DBD\system_log::FIELD_IP.','.\SYSTEM\DBD\system_log::FIELD_QUERYTIME.','.
\SYSTEM\DBD\system_log::FIELD_TIME.','.\SYSTEM\DBD\system_log::FIELD_SERVER_NAME.','.
\SYSTEM\DBD\system_log::FIELD_SERVER_PORT.','.\SYSTEM\DBD\system_log::FIELD_REQUEST_URI.','.
\SYSTEM\DBD\system_log::FIELD_POST.','.\SYSTEM\DBD\system_log::FIELD_HTTP_REFERER.','.
\SYSTEM\DBD\system_log::FIELD_HTTP_USER_AGENT.','.\SYSTEM\DBD\system_log::FIELD_USER.','.
\SYSTEM\DBD\system_log::FIELD_THROWN.')'.
'VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);',
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),date('Y-m-d H:i:s', microtime(true)),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,$_SERVER['HTTP_USER_AGENT'],
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null,$thrown));
}
\SYSTEM\DBD\SYS_LOG_INSERT::Q1( array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,$_SERVER['HTTP_USER_AGENT'],
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null, $thrown ? 1 : 0),
array( get_class($E), $E->getMessage(), $E->getCode(), $E->getFile(), $E->getLine(), $E->getTraceAsString(),
getenv('REMOTE_ADDR'),round(microtime(true) - \SYSTEM\time::getStartTime(),5),date('Y-m-d H:i:s', microtime(true)),
$_SERVER["SERVER_NAME"],$_SERVER["SERVER_PORT"],$_SERVER['REQUEST_URI'], serialize($_POST),
array_key_exists('HTTP_REFERER', $_SERVER) ? $_SERVER['HTTP_REFERER'] : null,$_SERVER['HTTP_USER_AGENT'],
($user = \SYSTEM\SECURITY\Security::getUser()) ? $user->id : null,$thrown));
if(\property_exists(get_class($E), 'logged')){
$E->logged = true;} //we just did log
} catch (\Exception $E){} //Error -> Ignore

View File

@ -61,8 +61,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_error.tpl'), $vars);}
public static function sai_mod__SYSTEM_SAI_saimod_sys_log_action_filter($filter = "%"){
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER_COUNT::QQ(array(mysql_escape_string($filter)))->next();
$count = $res['count'];
$count = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER_COUNT::Q1(array(mysql_escape_string($filter)));
$res = \SYSTEM\DBD\SYS_SAIMOD_LOG_FILTER::QQ(array(mysql_escape_string($filter)));
$now = microtime(true);
$table='';
@ -74,7 +73,7 @@ class saimod_sys_log extends \SYSTEM\SAI\SaiModule {
$table .= \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table_row.tpl'),$r);
}
$vars = array();
$vars['count'] = $count;
$vars['count'] = $count['count'];
$vars['table'] = $table;
return \SYSTEM\PAGE\replace::replaceFile(\SYSTEM\SERVERPATH(new \SYSTEM\PSAI(),'modules/saimod_sys_log/saimod_sys_log_table.tpl'), $vars);
}