diff --git a/db-config.php b/db-config.php index 338e0d4005491a9fb3cb87da7bd8fff497f507d0..85806f0598be284f0fb82616045d0475d5ccbeb9 100644 --- a/db-config.php +++ b/db-config.php @@ -12,7 +12,7 @@ include_once('r2db/db-hash.php'); include_once('r2db/db-backends.php'); // Set up global dataset with master databases -noblogs_load_global_dataset(NOBLOGS_MASTER_CONFIG, NOBLOGS_HOST_FILE); +noblogs_load_global_dataset(); // Add all the sharded blog databases. -$wpdb_reverse_backend_map = noblogs_load_backends(NOBLOGS_BACKEND_CONFIG, $wpdb->hash_map); +$wpdb_reverse_backend_map = noblogs_load_backends($wpdb->hash_map); diff --git a/r2db/db-backends.php b/r2db/db-backends.php index e99f2df16da5944d9ab8c3cdfe84959b877130f4..85806f0598be284f0fb82616045d0475d5ccbeb9 100644 --- a/r2db/db-backends.php +++ b/r2db/db-backends.php @@ -1,65 +1,18 @@ <?php -function noblogs_split_db($file) { - $db_url = trim(file_get_contents($file)); - return parse_url($db_url); -} +// Common settings +$wpdb->persistent = true; +$wpdb->max_connections = 30; -function noblogs_load_backends($db_config_file, $hashptr) { - global $wpdb; +/* Disable responsiveness check, is not needed in our configuration and is causing + connection errors for the wrong implementation */ +$wpdb->check_tcp_responsiveness = false; - $backend_map = array(); +include_once('r2db/db-hash.php'); +include_once('r2db/db-backends.php'); - $fp = @fopen($db_config_file, "r"); - if (!$fp) { - die("Database backends not configured!"); - } - while (($line = fgets($fp, 1024)) !== false) { - $wline = rtrim($line); - if ($wline == "" || $wline[0] == '#') { - continue; - } - $line_parts = explode(" ", $wline); - $server_id = $line_parts[0]; - $dataset = "backend_" . $server_id; - $backend_url = $line_parts[2]; - $backend_url_data = parse_url($backend_url); - $backend = array( - "host" => $backend_url_data["host"] . ":" . $backend_url_data["port"], - "user" => $backend_url_data["user"], - "password" => $backend_url_data["pass"], - "name" => substr($backend_url_data["path"], 1), - "dataset" => $dataset, - "read" => 1, "write" => 1, "timeout" => 10 - ); - $wpdb->add_database($backend); - $hashptr->addTarget($dataset); - $backend_map[$dataset] = $backend; - } - fclose($fp); - return $backend_map; -} +// Set up global dataset with master databases +noblogs_load_global_dataset(); -function noblogs_load_global_dataset($master_file, $ip_file) { - global $wpdb; - $mdata = noblogs_split_db($master_file); - $ldata = trim(file_get_contents($ip_file)); - $globaldb = array( - "host" => $mdata["host"] . ":" . $mdata["port"], - "user" => $mdata["user"], - "password" => $mdata["pass"], - "name" => substr($mdata["path"], 1), - "dataset" => "global", - "read" => 1, "write" => 1, "timeout" => 2 - ); - if ($mdata['host'] == $ldata) { - $wpdb->add_database($globaldb); - } else { - $globaldb['read'] = 0; - $wpdb->add_database($globaldb); - $globaldb['host'] = $ldata . ":" . $mdata["port"]; - $globaldb['read'] = 1; - $globaldb['write'] = 0; - $wpdb->add_database($globaldb); - } -} +// Add all the sharded blog databases. +$wpdb_reverse_backend_map = noblogs_load_backends($wpdb->hash_map);