diff --git a/config.php b/config.php index 255898e1..c1ac9823 100644 --- a/config.php +++ b/config.php @@ -64,6 +64,8 @@ $config = array( 'database_password' => '', 'database_name' => '', 'database_log' => false, // should database queries be logged and displayed in the page source? They will be included at the end of the .html source of the page + 'database_socket' => '', // set if you want to connect to database through socket (example: /var/run/mysqld/mysqld.sock) + 'database_persistent' => false, // use database permanent connection (like server), may speed up your site // multiworld system (only TFS 0.3) 'multiworld' => false, // use multiworld system? diff --git a/system/database.php b/system/database.php index 29698171..a342ec3b 100644 --- a/system/database.php +++ b/system/database.php @@ -9,7 +9,7 @@ */ defined('MYAAC') or die('Direct access not allowed!'); - if(!isset($config['database_type'][0], $config['database_user'][0], $config['database_password'][0], $config['database_name'][0])) + if(!isset($config['database_user'][0], $config['database_password'][0], $config['database_name'][0])) { if(isset($config['lua']['sqlType'])) {// tfs 0.3 if(isset($config['lua']['mysqlHost'])) {// tfs 0.2 @@ -45,6 +45,9 @@ defined('MYAAC') or die('Direct access not allowed!'); $config['database_user'] = $config['lua']['mysqlUser']; $config['database_password'] = $config['lua']['mysqlPass']; $config['database_name'] = $config['lua']['mysqlDatabase']; + if(!isset($config['database_socket'][0])) { + $config['database_socket'] = isset($config['lua']['mysqlSock']) ? trim($config['lua']['mysqlSock']) : ''; + } $config['database_encryption'] = 'sha1'; } else if(isset($config['lua']['database_type'])) // otserv @@ -80,13 +83,19 @@ defined('MYAAC') or die('Direct access not allowed!'); $config['database_log'] = false; } + if(!isset($config['database_socket'])) { + $config['database_socket'] = ''; + } + try { $ots->connect(array( 'host' => $config['database_host'], 'user' => $config['database_user'], 'password' => $config['database_password'], 'database' => $config['database_name'], - 'log' => $config['database_log'] + 'log' => $config['database_log'], + 'socket' => @$config['database_socket'], + 'persistent' => @$config['database_persistent'] ) ); @@ -96,7 +105,7 @@ defined('MYAAC') or die('Direct access not allowed!'); if(isset($cache) && $cache->enabled()) { $cache->delete('config_lua'); } - + if(defined('MYAAC_INSTALL')) { return; // installer will take care of this } diff --git a/system/libs/pot/OTS_DB_MySQL.php b/system/libs/pot/OTS_DB_MySQL.php index 9e723fd4..86ed304a 100644 --- a/system/libs/pot/OTS_DB_MySQL.php +++ b/system/libs/pot/OTS_DB_MySQL.php @@ -64,16 +64,6 @@ class OTS_DB_MySQL extends OTS_Base_DB $params['port'] = $host[1]; } - if( isset($params['host']) ) - { - $dns[] = 'host=' . $params['host']; - } - - if( isset($params['port']) ) - { - $dns[] = 'port=' . $params['port']; - } - if( isset($params['database']) ) { $dns[] = 'dbname=' . $params['database']; @@ -99,6 +89,10 @@ class OTS_DB_MySQL extends OTS_Base_DB $this->logged = true; } + if( !isset($params['persistent']) ) { + $params['persistent'] = false; + } + global $cache, $config; if(isset($cache) && $cache->enabled()) { $tmp = null; @@ -123,7 +117,27 @@ class OTS_DB_MySQL extends OTS_Base_DB } } - parent::__construct('mysql:' . implode(';', $dns), $user, $password); + if(isset($params['socket'][0])) { + $dns[] = 'unix_socket=' . $params['socket']; + + parent::__construct('mysql:' . implode(';', $dns), $user, $password, array( + PDO::ATTR_PERSISTENT => $params['persistent'] + )); + + return; + } + + if( isset($params['host']) ) { + $dns[] = 'host=' . $params['host']; + } + + if( isset($params['port']) ) { + $dns[] = 'port=' . $params['port']; + } + + parent::__construct('mysql:' . implode(';', $dns), $user, $password, array( + PDO::ATTR_PERSISTENT => $params['persistent'] + )); } public function __destruct()