Enable SQL logging (set 'sql_debug' config param to true); Switch to emulated prepare mode for better performance

release-0.6
thomascube 17 years ago
parent 0714b7e09d
commit 9814721e8d

@ -74,6 +74,7 @@ function rcmail_startup($task='mail')
$DB = new $dbclass($CONFIG['db_dsnw'], $CONFIG['db_dsnr'], $CONFIG['db_persistent']);
$DB->sqlite_initials = $INSTALL_PATH.'SQL/sqlite.initial.sql';
$DB->set_debug((bool)$CONFIG['sql_debug']);
$DB->db_connect('w');
// use database for storing session data

@ -153,8 +153,18 @@ class rcube_db
$this->db_handle = $this->dsn_connect($dsn);
$this->db_connected = $this->db_handle ? TRUE : FALSE;
}
/**
* Activate/deactivate debug mode
* (not implemented)
*/
function set_debug($dbg = true)
{
}
/**
* Getter for error state
*

@ -48,6 +48,7 @@ class rcube_mdb2
var $db_handle = 0; // Connection handle
var $db_error = false;
var $db_error_msg = '';
var $debug_mode = false;
var $a_query_results = array('dummy');
var $last_res_id = 0;
@ -94,8 +95,11 @@ class rcube_mdb2
function dsn_connect($dsn)
{
// Use persistent connections if available
$dbh = MDB2::connect($dsn,
array('persistent' => $this->db_pconn,
$dbh = MDB2::connect($dsn, array(
'emulate_prepared' => true,
'persistent' => $this->db_pconn,
'debug' => $this->debug_mode,
'debug_handler' => 'mdb2_debug_handler',
'portability' => MDB2_PORTABILITY_ALL ^ MDB2_PORTABILITY_EMPTY_TO_NULL));
if (MDB2::isError($dbh))
@ -156,6 +160,18 @@ class rcube_mdb2
}
/**
* Activate/deactivate debug mode
*
* @param boolean True if SQL queries should be logged
*/
function set_debug($dbg = true)
{
$this->debug_mode = $dbg;
if ($this->db_connected)
$this->db_handle->setOption('debug', $dbg);
}
/**
* Getter for error state
@ -569,4 +585,17 @@ class rcube_mdb2
} // end class rcube_db
/* this is our own debug handler for the MDB2 connection */
function mdb2_debug_handler(&$db, $scope, $message, $context = array())
{
if ($scope != 'prepare')
{
$debug_output = $scope . '('.$db->db_index.'): ';
$debug_output .= $message . $db->getOption('log_line_break');
write_log('sqllog', $debug_output);
}
}
?>

Loading…
Cancel
Save