209 lines
6.3 KiB
PHP
209 lines
6.3 KiB
PHP
|
<?php
|
||
|
|
||
|
global $w3tc_dbcluster_config;
|
||
|
|
||
|
$w3tc_dbcluster_config = array(
|
||
|
/**
|
||
|
* Persistent (bool)
|
||
|
*
|
||
|
* This determines whether to use mysql_connect or mysql_pconnect. The effects
|
||
|
* of this setting may vary and should be carefully tested.
|
||
|
* Default: false
|
||
|
*/
|
||
|
'persistent' => false,
|
||
|
|
||
|
/**
|
||
|
* check_tcp_responsiveness
|
||
|
*
|
||
|
* Enables checking TCP responsiveness by fsockopen prior to mysql_connect or
|
||
|
* mysql_pconnect. This was added because PHP's mysql functions do not provide
|
||
|
* a variable timeout setting. Disabling it may improve average performance by
|
||
|
* a very tiny margin but lose protection against connections failing slowly.
|
||
|
* Default: true
|
||
|
*/
|
||
|
'check_tcp_responsiveness' => true,
|
||
|
|
||
|
/**
|
||
|
* Default is to always (reads & writes) use the master db when user is in administration backend.
|
||
|
* Set use_master_in_backend to false to disable this behavior.
|
||
|
*
|
||
|
* WARNING: if your cluster has any replication delays then when this is enabled, you may not see
|
||
|
* any admin changes until the replication catches up with the change written to your master
|
||
|
* server and will see old content/configuration until that point in time - You should test this
|
||
|
* in your environment fully.
|
||
|
*/
|
||
|
'use_master_in_backend' => true,
|
||
|
|
||
|
/**
|
||
|
* This set the charset that the db connection should use.
|
||
|
* If DB_CHARSET is set there is no need to set $wpdb_cluster->charset.
|
||
|
*/
|
||
|
'charset' => DB_CHARSET,
|
||
|
|
||
|
/**
|
||
|
* This set the charset that the db connection should use.
|
||
|
* If DB_COLLATE is set there is no need to set $wpdb_cluster->collate.
|
||
|
*/
|
||
|
'collate' => DB_COLLATE,
|
||
|
/** Configuration Functions **/
|
||
|
|
||
|
/**
|
||
|
* database is an associative array with these parameters:
|
||
|
* host (required) Hostname with optional :port. Default port is 3306.
|
||
|
* user (required) MySQL user name.
|
||
|
* password (required) MySQL user password.
|
||
|
* name (required) MySQL database name.
|
||
|
* read (optional) Whether server is readable. Default is 1 (readable).
|
||
|
* Also used to assign preference.
|
||
|
* write (optional) Whether server is writable. Default is 1 (writable).
|
||
|
* Also used to assign preference in multi-master mode.
|
||
|
* dataset (optional) Name of dataset. Default is 'global'.
|
||
|
* timeout (optional) Seconds to wait for TCP responsiveness. Default is 0.2
|
||
|
* connect_function (optional) connection function to use
|
||
|
* zone (optional) name of zone where server is located.
|
||
|
* Used for web applications hosted on cluster
|
||
|
*
|
||
|
* Read & write
|
||
|
* A database definition can include 'read' and 'write' parameters. These
|
||
|
* operate as boolean switches but they are typically specified as integers.
|
||
|
* They allow or disallow use of the database for reading or writing.
|
||
|
*
|
||
|
* A master database might be configured to allow reading and writing:
|
||
|
* 'write' => true,
|
||
|
* 'read' => true,
|
||
|
* while a slave would be allowed only to read:
|
||
|
* 'write' => false,
|
||
|
* 'read' => true,
|
||
|
*
|
||
|
* It might be advantageous to disallow reading from the master, such as when
|
||
|
* there are many slaves available and the master is very busy with writes.
|
||
|
* 'write' => true,
|
||
|
* 'read' => false,
|
||
|
*
|
||
|
*/
|
||
|
'databases' => array(
|
||
|
'master' => array(
|
||
|
'host' => DB_HOST, // If port is other than 3306, use host:port.
|
||
|
'user' => DB_USER,
|
||
|
'password' => DB_PASSWORD,
|
||
|
'name' => DB_NAME
|
||
|
)
|
||
|
),
|
||
|
|
||
|
/**
|
||
|
* Zones (for web applications hosted on cluster)
|
||
|
*
|
||
|
* When your databases are located in separate physical locations there is
|
||
|
* typically an advantage to connecting to a nearby server instead of a more
|
||
|
* distant one. This can be configured by defining zones.
|
||
|
*
|
||
|
* Add 'zone' parameter to add_server call:
|
||
|
* 'zone' => 'A'
|
||
|
*
|
||
|
* Plugin determines where application is running by checking
|
||
|
* $_SERVER['SERVER_NAME'] system variable against defined in zone definition
|
||
|
* and then connects to servers following defined order:
|
||
|
* Value '*' can be used as 'server_names' item to indicate any server.
|
||
|
*
|
||
|
* 'zones' => array(
|
||
|
* 'zone_name' => array(
|
||
|
* 'server_names' => array('host1', 'host1.1'),
|
||
|
* 'zone_priorities' => array('A', 'B')
|
||
|
* )
|
||
|
* )
|
||
|
*
|
||
|
* As a result it will try to connect to servers in zone A first, then servers
|
||
|
* in zone B.
|
||
|
*/
|
||
|
'zones' => array(
|
||
|
),
|
||
|
|
||
|
/**
|
||
|
* Filters
|
||
|
*
|
||
|
* Filters are executed on <tag> event in the order in which they are
|
||
|
* registered until one of them returns something other than null.
|
||
|
*
|
||
|
* Tags:
|
||
|
* 'dataset' - fitler will be called with two arguments and expected to
|
||
|
* return a dataset to connect to
|
||
|
* $dataset = $callback($table, &$wpdb);
|
||
|
* 'blog_dataset' - fitler will be called with argument $blog_id and
|
||
|
* expected to return a dataset to connect to.
|
||
|
* Used when data are partitioned at blog level
|
||
|
* $dataset = $callback($blog_id);
|
||
|
*
|
||
|
* 'filters' => array(
|
||
|
* array(
|
||
|
* 'tag' => 'tag_to_add',
|
||
|
* 'function_to_add' => 'function_name'
|
||
|
|
||
|
* );
|
||
|
*/
|
||
|
'filters' => array(
|
||
|
)
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
/**
|
||
|
* This adds the same server again, only this time it is configured as a slave.
|
||
|
* The last three parameters are set to the defaults but are shown for clarity.
|
||
|
*/
|
||
|
/*
|
||
|
$w3tc_dbcluster_config = array(
|
||
|
'databases' => array(
|
||
|
'master' => array(
|
||
|
'host' => DB_HOST,
|
||
|
'user' => DB_USER,
|
||
|
'password' => DB_PASSWORD,
|
||
|
'name' => DB_NAME
|
||
|
),
|
||
|
'slave' => array(
|
||
|
'host' => DB_HOST,
|
||
|
'user' => DB_USER,
|
||
|
'password' => DB_PASSWORD,
|
||
|
'name' => DB_NAME,
|
||
|
'write' => false,
|
||
|
'read' => true,
|
||
|
'timeout' => 0.2,
|
||
|
));
|
||
|
*/
|
||
|
|
||
|
/** Sample Configuration 2: Partitioning **/
|
||
|
|
||
|
/**
|
||
|
* This example shows a setup where the multisite blog tables have been
|
||
|
* separated from the global dataset.
|
||
|
*/
|
||
|
/*
|
||
|
$w3tc_dbcluster_config = array(
|
||
|
'databases' => array(
|
||
|
'master' => array(
|
||
|
'host' => 'global.db.example.com',
|
||
|
'user' => 'globaluser',
|
||
|
'password' => 'globalpassword',
|
||
|
'name' => 'globaldb',
|
||
|
),
|
||
|
'partition2' => array(
|
||
|
'host' => 'blog.db.example.com',
|
||
|
'user' => 'bloguser',
|
||
|
'password' => 'blogpassword',
|
||
|
'name' => 'blogdb',
|
||
|
'dataset' => 'blog2',
|
||
|
),
|
||
|
)
|
||
|
'filters' => array(
|
||
|
array(
|
||
|
'tag' => 'blog_dataset',
|
||
|
'function_to_add' => 'my_db_callback'
|
||
|
)
|
||
|
)
|
||
|
);
|
||
|
|
||
|
function my_db_callback($blog_id, $wpdb_cluster) {
|
||
|
if ($blog_id > 5))
|
||
|
return 'blog2';
|
||
|
}
|
||
|
*/
|