Skip to content
Snippets Groups Projects
Commit 44852f53 authored by ale's avatar ale
Browse files

Move all database code in a single file

parent a7d31d77
No related branches found
No related tags found
No related merge requests found
Pipeline #12398 passed
<?php
function noblogs_load_backends($hashptr) {
require_once(dirname(__FILE__) . '/flexihash.php');
require_once(ABSPATH . 'wp-config.php');
$r2db_hash_map = new Flexihash(null, R2DB_FLEXIHASH_REPLICAS);
/* Hashing function to map blogs to databases.
*
* Implements a consistent hashing scheme using Flexihash.
*/
function noblogs_db_callback($query, $wpdb) {
global $r2db_hash_map;
if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $wpdb->table, $matches)) {
$blog_id = $matches[1];
return $r2db_hash_map->lookup($blog_id);
}
}
$wpdb->add_callback('noblogs_db_callback');
/* Load backend shards and add them to FlexiHash / $wpdb. */
function noblogs_load_backends() {
global $wpdb;
global $r2db_hash_map;
global $noblogs_config;
$backend_map = array();
foreach ($noblogs_config['db_config']['backends'] as $backend_name => $backend) {
......@@ -16,12 +37,13 @@ function noblogs_load_backends($hashptr) {
"timeout" => 10
);
$wpdb->add_database($b);
$hashptr->addTarget($backend_name);
$r2db_hash_map->addTarget($backend_name);
$backend_map[$backend_name] = $b;
}
return $backend_map;
}
/* Load the local and master backends to $wpdb. */
function noblogs_load_global_dataset() {
global $wpdb;
global $noblogs_config;
......
......@@ -8,11 +8,10 @@ $wpdb->max_connections = 30;
connection errors for the wrong implementation */
$wpdb->check_tcp_responsiveness = false;
include_once('r2db/db-hash.php');
include_once('r2db/db-backends.php');
// Set up global dataset with master databases
noblogs_load_global_dataset();
// Add all the sharded blog databases.
$wpdb_reverse_backend_map = noblogs_load_backends($r2db_hash_map);
$wpdb_reverse_backend_map = noblogs_load_backends();
<?php
require_once(dirname(__FILE__) . '/flexihash.php');
require_once( ABSPATH . 'wp-config.php' );
$r2db_hash_map = new Flexihash(null, R2DB_FLEXIHASH_REPLICAS);
/* Hashing function to map blogs to databases.
*
* Implements a consistent hashing scheme using Flexihash.
*/
function noblogs_db_callback($query, $wpdb) {
global $r2db_hash_map;
if (preg_match("/^{$wpdb->base_prefix}(\d+)_/", $wpdb->table, $matches)) {
$blog_id = $matches[1];
return $r2db_hash_map->lookup($blog_id);
}
}
$wpdb->add_callback('noblogs_db_callback');
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment