Merge branch 'MDL-25910_20_wip_mysqlsocket' of git://github.com/skodak/moodle
authorSam Hemelryk <sam@moodle.com>
Tue, 18 Jan 2011 06:18:24 +0000 (14:18 +0800)
committerSam Hemelryk <sam@moodle.com>
Tue, 18 Jan 2011 06:18:24 +0000 (14:18 +0800)
config-dist.php
lib/dml/mysqli_native_moodle_database.php
lib/dml/pgsql_native_moodle_database.php

index 66f6bad..f9909be 100644 (file)
@@ -50,9 +50,12 @@ $CFG->dboptions = array(
                                 //  used? set to 'false' for the most stable
                                 //  setting, 'true' can improve performance
                                 //  sometimes
-    'dbsocket'  => false,       // should connection via UNIX socket be
-                                //  used? if you set it to 'true' here,
-                                //  set dbhost to 'localhost'
+    'dbsocket'  => false,       // should connection via UNIX socket be used?
+                                //  if you set it to 'true' or custom path
+                                //  here set dbhost to 'localhost',
+                                //  (please note mysql is always using socket
+                                //  if dbhost is 'localhost' - if you need
+                                //  local port connection use '127.0.0.1')
     'dbport'    => '',          // the TCP port number to use when connecting
                                 //  to the server. keep empty string for the
                                 //  default port
index d4cb065..b22ca09 100644 (file)
@@ -264,15 +264,21 @@ class mysqli_native_moodle_database extends moodle_database {
         }
 
         $this->store_settings($dbhost, $dbuser, $dbpass, $dbname, $prefix, $dboptions);
-        unset($this->dboptions['dbsocket']);
 
+        // dbsocket is used ONLY if host is NULL or 'localhost',
+        // you can not disable it because it is always tried if dbhost is 'localhost'
+        if (!empty($this->dboptions['dbsocket']) and strpos($this->dboptions['dbsocket'], '/') !== false) {
+            $dbsocket = $this->dboptions['dbsocket'];
+        } else {
+            $dbsocket = ini_get('mysqli.default_socket');
+        }
         if (empty($this->dboptions['dbport'])) {
             $dbport = ini_get('mysqli.default_port');
         } else {
             $dbport = (int)$this->dboptions['dbport'];
         }
         ob_start();
-        $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport);
+        $this->mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname, $dbport, $dbsocket);
         $dberr = ob_get_contents();
         ob_end_clean();
         $errorno = @$this->mysqli->connect_errno;
index d78bf57..030e954 100644 (file)
@@ -138,8 +138,11 @@ class pgsql_native_moodle_database extends moodle_database {
         // Unix socket connections should have lower overhead
         if (!empty($this->dboptions['dbsocket']) and ($this->dbhost === 'localhost' or $this->dbhost === '127.0.0.1')) {
             $connection = "user='$this->dbuser' password='$pass' dbname='$this->dbname'";
+            if (strpos($this->dboptions['dbsocket'], '/') !== false) {
+                $connection = $connection." host='".$this->dboptions['dbsocket']."'";
+            }
         } else {
-            $this->dboptions['dbsocket'] = 0;
+            $this->dboptions['dbsocket'] = '';
             if (empty($this->dbname)) {
                 // probably old style socket connection - do not add port
                 $port = "";