diff --git a/db-backends.php b/db-backends.php index af791645d30e4c4d427e4c16e89162d652f5db3d..d7eafc9777ae0e824ced54fb59e768b5b921da74 100644 --- a/db-backends.php +++ b/db-backends.php @@ -1,6 +1,6 @@ <?php -function noblogs_load_backends($db_config_file, &$hashptr) { +function noblogs_load_backends($db_config_file, $hashptr) { global $wpdb; $backend_map = array(); diff --git a/db-hash.php b/db-hash.php index 2c14ce2573ad0c02dd4366ba2b98ea57a2fe80db..6f69aaf002eadcf096242e89d463c025fb0420d4 100644 --- a/db-hash.php +++ b/db-hash.php @@ -1,15 +1,15 @@ <?php -require_once('flexihash.php'); +require_once(dirname(__FILE__) . '/flexihash.php'); -$wpdb_hash = new Flexihash(); +$wpdb->hash_map = new Flexihash(); /* Hashing function to map blogs to databases. * * Implements a consistent hashing scheme using Flexihash. */ function noblogs_db_callback($query, $wpdb) { - global $wpdb_hash; + $wpdb_hash = $wpdb->hash_map; if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $wpdb->table, $matches)) { $blog_id = $matches[1]; return $wpdb_hash->lookup($blog_id); diff --git a/tools/db-migrate-to-new-schema.php b/tools/db-migrate-to-new-schema.php index e393de01981a75c4e2a7307d27da0a9ce25cd677..b1083e725bf3f540b4a783505aaf5f87b4240676 100755 --- a/tools/db-migrate-to-new-schema.php +++ b/tools/db-migrate-to-new-schema.php @@ -5,7 +5,7 @@ define('WP_CACHE',false); /** Setup WordPress environment */ require_once('wp-load.php'); -require_once('db-config-new.php'); +require_once('db-config.php'); function old_hash($dbid) { @@ -24,11 +24,10 @@ function old_hash($dbid) { } } -function new_hash($dbid) { - global $wpdb_hash; - global $wpdb_reverse_backend_map; - $lookup = $wpdb_hash->lookup($dbid); - $backend = $wpdb_reverse_backend_map[$lookup]; +function new_hash($dbid, $reversemap) { + global $wpdb; + $lookup = $wpdb->hash_map->lookup($dbid); + $backend = $reversemap[$lookup]; $result = array(); if (preg_match('/^(.*):([0-9]*)$/', $backend['host'], $matches)) { $result['host'] = $matches[1]; @@ -54,11 +53,15 @@ function get_all_blogs() { global $wpdb; - $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 1 AND deleted = 0 AND archived = '0' ORDER BY domain, path"; +// $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 1 AND deleted = 0 AND archived = '0' ORDER BY domain, path"; + $sql = "SELECT blog_id, domain, path FROM $wpdb->blogs WHERE public = 0 ORDER BY domain, path"; $result = $wpdb->get_results($sql); return ($result); } +$hashmap = new Flexihash(); +$reverse_backend_map = noblogs_load_backends(NOBLOGS_BACKEND_CONFIG, $hashmap); + $new_counts = array(); $moved_count = 0; $blogs = get_all_blogs(); @@ -67,7 +70,7 @@ foreach ($blogs as $blog) { $old_params = old_hash($blog_id); $old_dburi = mysqlurl($old_params); - $new_params = new_hash($blog_id); + $new_params = new_hash($blog_id, $reverse_backend_map); $new_dburi = mysqlurl($new_params); if ($new_counts[$new_params['host']]) {