PHP Class LudicrousDB, ludicrousdb

Inheritance: extends wpdb
Show file Open project: stuttter/ludicrousdb

Public Properties

Property Type Description
$check_tcp_responsiveness Whether to check with fsockopen prior to mysql_connect
$db_connections The log of db connections made and the time each one took
$dbh resource The current MySQL link resource
$dbh2host Lookup array (dbhname => host:port)
$dbhs array Associative array (dbhname => dbh) for established MySQL connections
$default_lag_threshold Maximum lag in seconds. Set null to disable. Requires callbacks
$last_found_rows_result resource After any SQL_CALC_FOUND_ROWS query, the query "SELECT FOUND_ROWS()" is sent and the MySQL result resource stored here. The next query for FOUND_ROWS() will retrieve this. We do this to prevent any intervening queries from making FOUND_ROWS() inaccessible. You may prevent this by adding "NO_SELECT_FOUND_ROWS" in a comment
$last_table string The last table that was queried
$last_used_server The last server used and the database name selected
$ludicrous_callbacks Optional directory of callbacks to determine datasets from queries
$ludicrous_servers The multi-dimensional array of datasets and servers
$ludicrous_tables Optional directory of tables and their datasets
$max_connections The maximum number of db links to keep open. The least-recently used link will be closed when the number of links exceeds this
$open_connections The list of unclosed connections sorted by LRU
$persistent Whether to use mysql_pconnect instead of mysql_connect
$save_backtrace Whether to save debug_backtrace in save_query_callback. You may wish to disable this, e.g. when tracing out-of-memory problems.
$save_queries boolean Whether to store queries in an array. Useful for debugging and profiling
$save_query_callback Custom callback to save debug info in $this->queries
$srtm Otherwise it is an array of written tables
$used_servers Lookup array (dbhname => (server, db name) ) for re-selecting the db when a link is re-used

Protected Properties

Property Type Description
$reconnect_retries integer The number of times to retry reconnecting before dying

Public Methods

Method Description
__construct ( $args = null ) Gets ready to make database connections
_real_escape ( $string ) * Force addslashes() for the escapes
add_callback ( $callback, $group = 'dataset' ) Add a callback to a group of callbacks
add_database ( array $db = [] ) Add the connection parameters for a database
add_table ( $dataset, $table ) Specify the dataset where a table is found
check_connection ( boolean $allow_bail = true, $dbh_or_table = false ) : boolean | void Check that the connection to the database is still up. If not, try to reconnect
check_database_version ( false | string | resource $dbh_or_table = false ) : WP_Error Whether or not MySQL database is at least the required minimum version.
check_lag ( ) : integer Check lag
check_tcp_responsiveness ( $host, $port, $float_timeout ) : boolean Check the responsiveness of a TCP/IP daemon
close ( false | string | resource $dbh_or_table = false ) : boolean Closes the current database connection
db_connect ( $query = '' ) : resource Figure out which db server should handle the query, and connect to it
db_version ( false | string | resource $dbh_or_table = false ) : false | string The database version number
disconnect ( string $dbhname ) Disconnect and remove connection from open connections list
flush ( ) Kill cached query results
get_caller ( ) : string Get the name of the function that called wpdb()
get_lag ( ) : integer Run lag callbacks and return current lag
get_lag_cache ( ) : integer Run lag cache callbacks and return current lag
has_cap ( string $db_cap, false | string | resource $dbh_or_table = false ) : boolean Generic function to determine if a database supports a particular feature The additional argument allows the caller to check a specific database
init_charset ( ) Sets $this->charset and $this->collate
is_write_query ( $q ) : boolean Determine the likelihood that this query could alter anything
query ( string $query ) : integer Basic query. See docs for more details
run_callbacks ( $group, $args = null ) Callbacks are executed in the order in which they are registered until one of them returns something other than null
select ( string $db, false | string | resource $dbh_or_table = false ) Selects a database using the current database connection
send_reads_to_masters ( ) Set a flag to prevent reading from slaves which might be lagging after a write
set_charset ( resource $dbh, string $charset = null, string $collate = null ) Sets the connection's character set
set_sql_mode ( array $modes = [], false | string | resource $dbh_or_table = false ) Change the current SQL mode, and ensure its WordPress compatibility
supports_collation ( false | string | resource $dbh_or_table = false ) : boolean This function is called when WordPress is generating the table schema to determine whether or not the current database supports or needs the collation statements

Protected Methods

Method Description
_do_query ( string $query, boolean $dbh_or_table = false ) Internal function to perform the mysql_query() call
get_table_charset ( string $table ) : mixed Retrieves a tables character set.
load_col_info ( ) Load the column metadata from the last query.
single_db_connect ( string $dbhname, string $host, string $user, string $password ) : boolean | mysqli | resource Connect selected database
strip_invalid_text_using_db ( string $string, string $charset ) : mixed Given a string, a character set and a table, ask the DB to check the string encoding.
tcp_cache_get ( string $key ) : mixed Get cached up/down value of previous TCP response
tcp_cache_set ( string $key, string $value ) : boolean Set cached up/down value of current TCP response
tcp_get_cache_expiration ( ) : integer Get the number of seconds TCP response is good for
tcp_get_cache_key ( string $host, string $port ) : string Get the cache key used for TCP responses

Private Methods

Method Description
dbh_type_check ( $dbh ) : boolean
get_db_object ( false | string | resource $dbh_or_table = false ) Get the db connection object

Method Details

__construct() public method

Gets ready to make database connections
public __construct ( $args = null )

_do_query() protected method

Internal function to perform the mysql_query() call
See also: wpdb::query()
protected _do_query ( string $query, boolean $dbh_or_table = false )
$query string The query to run.
$dbh_or_table boolean

_real_escape() public method

LudicrousDB makes connections when a query is made which is why we can't use mysql_real_escape_string() for escapes This is also the reason why we don't allow certain charsets. See set_charset().
public _real_escape ( $string )

add_callback() public method

The default group is 'dataset', used to examine queries & determine dataset
public add_callback ( $callback, $group = 'dataset' )

add_database() public method

Add the connection parameters for a database
public add_database ( array $db = [] )
$db array

add_table() public method

Specify the dataset where a table is found
public add_table ( $dataset, $table )

check_connection() public method

If this function is unable to reconnect, it will forcibly die, or if after the the template_redirect hook has been fired, return false instead If $allow_bail is false, the lack of database connection will need to be handled manually
public check_connection ( boolean $allow_bail = true, $dbh_or_table = false ) : boolean | void
$allow_bail boolean Optional. Allows the function to bail. Default true.
return boolean | void True if the connection is up.

check_database_version() public method

The additional argument allows the caller to check a specific database
public check_database_version ( false | string | resource $dbh_or_table = false ) : WP_Error
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)
return WP_Error

check_lag() public method

Check lag
Since: 2.1.0
public check_lag ( ) : integer
return integer

check_tcp_responsiveness() public method

Check the responsiveness of a TCP/IP daemon
public check_tcp_responsiveness ( $host, $port, $float_timeout ) : boolean
return boolean true when $host:$post responds within $float_timeout seconds, else false

close() public method

Closes the current database connection
public close ( false | string | resource $dbh_or_table = false ) : boolean
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)
return boolean True if the connection was successfully closed, false if it wasn't, or the connection doesn't exist.

db_connect() public method

Figure out which db server should handle the query, and connect to it
public db_connect ( $query = '' ) : resource
return resource MySQL database connection

db_version() public method

The database version number
public db_version ( false | string | resource $dbh_or_table = false ) : false | string
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)
return false | string false on failure, version number on success

disconnect() public method

Disconnect and remove connection from open connections list
public disconnect ( string $dbhname )
$dbhname string

flush() public method

Kill cached query results
public flush ( )

get_caller() public method

Get the name of the function that called wpdb()
public get_caller ( ) : string
return string the name of the calling function

get_lag() public method

Run lag callbacks and return current lag
Since: 2.1.0
public get_lag ( ) : integer
return integer

get_lag_cache() public method

Run lag cache callbacks and return current lag
Since: 2.1.0
public get_lag_cache ( ) : integer
return integer

get_table_charset() protected method

NOTE: This must be called after LudicrousDB::db_connect, so that wpdb::dbh is set correctly
protected get_table_charset ( string $table ) : mixed
$table string Table name
return mixed The table character set, or WP_Error if we couldn't find it

has_cap() public method

Generic function to determine if a database supports a particular feature The additional argument allows the caller to check a specific database
public has_cap ( string $db_cap, false | string | resource $dbh_or_table = false ) : boolean
$db_cap string the feature
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)
return boolean

init_charset() public method

Sets $this->charset and $this->collate
public init_charset ( )

is_write_query() public method

Determine the likelihood that this query could alter anything
public is_write_query ( $q ) : boolean
return boolean

load_col_info() protected method

Load the column metadata from the last query.
protected load_col_info ( )

query() public method

Basic query. See docs for more details
public query ( string $query ) : integer
$query string
return integer number of rows

run_callbacks() public method

Callbacks are executed in the order in which they are registered until one of them returns something other than null
public run_callbacks ( $group, $args = null )

select() public method

The database name will be changed based on the current database connection. On failure, the execution will bail and display an DB error
public select ( string $db, false | string | resource $dbh_or_table = false )
$db string MySQL database name
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)

send_reads_to_masters() public method

Set a flag to prevent reading from slaves which might be lagging after a write

set_charset() public method

Sets the connection's character set
public set_charset ( resource $dbh, string $charset = null, string $collate = null )
$dbh resource The resource given by mysql_connect
$charset string The character set (optional)
$collate string The collation (optional)

set_sql_mode() public method

If no modes are passed, it will ensure the current MySQL server modes are compatible
public set_sql_mode ( array $modes = [], false | string | resource $dbh_or_table = false )
$modes array Optional. A list of SQL modes to set.
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)

single_db_connect() protected method

Connect selected database
protected single_db_connect ( string $dbhname, string $host, string $user, string $password ) : boolean | mysqli | resource
$dbhname string
$host string Internet address: host:port of server on internet.
$user string Database user.
$password string Database password.
return boolean | mysqli | resource

strip_invalid_text_using_db() protected method

Classes that extend wpdb can override this function without needing to copy/paste all of wpdb::strip_invalid_text(). NOTE: This must be called after LudicrousDB::db_connect, so that wpdb::dbh is set correctly
protected strip_invalid_text_using_db ( string $string, string $charset ) : mixed
$string string String to convert
$charset string Character set to test against (uses MySQL character set names)
return mixed The converted string, or a WP_Error if the conversion fails

supports_collation() public method

The additional argument allows the caller to check a specific database
public supports_collation ( false | string | resource $dbh_or_table = false ) : boolean
$dbh_or_table false | string | resource the database (the current database, the database housing the specified table, or the database of the MySQL resource)
return boolean

tcp_cache_get() protected method

Get cached up/down value of previous TCP response
Since: 3.0.0
protected tcp_cache_get ( string $key ) : mixed
$key string Results of tcp_get_cache_key()
return mixed Results of wp_cache_get()

tcp_cache_set() protected method

Set cached up/down value of current TCP response
Since: 3.0.0
protected tcp_cache_set ( string $key, string $value ) : boolean
$key string Results of tcp_get_cache_key()
$value string "up" or "down" based on TCP response
return boolean Results of wp_cache_set()

tcp_get_cache_expiration() protected method

Get the number of seconds TCP response is good for
Since: 3.0.0
protected tcp_get_cache_expiration ( ) : integer
return integer

tcp_get_cache_key() protected method

Get the cache key used for TCP responses
Since: 3.0.0
protected tcp_get_cache_key ( string $host, string $port ) : string
$host string
$port string
return string

Property Details

$check_tcp_responsiveness public property

Whether to check with fsockopen prior to mysql_connect
public $check_tcp_responsiveness

$db_connections public property

The log of db connections made and the time each one took
public $db_connections

$dbh public property

The current MySQL link resource
public resource $dbh
return resource

$dbh2host public property

Lookup array (dbhname => host:port)
public $dbh2host

$dbhs public property

Associative array (dbhname => dbh) for established MySQL connections
public array $dbhs
return array

$default_lag_threshold public property

Maximum lag in seconds. Set null to disable. Requires callbacks
public $default_lag_threshold

$last_found_rows_result public property

After any SQL_CALC_FOUND_ROWS query, the query "SELECT FOUND_ROWS()" is sent and the MySQL result resource stored here. The next query for FOUND_ROWS() will retrieve this. We do this to prevent any intervening queries from making FOUND_ROWS() inaccessible. You may prevent this by adding "NO_SELECT_FOUND_ROWS" in a comment
public resource $last_found_rows_result
return resource

$last_table public property

The last table that was queried
public string $last_table
return string

$last_used_server public property

The last server used and the database name selected
public $last_used_server

$ludicrous_callbacks public property

Optional directory of callbacks to determine datasets from queries
public $ludicrous_callbacks

$ludicrous_servers public property

The multi-dimensional array of datasets and servers
public $ludicrous_servers

$ludicrous_tables public property

Optional directory of tables and their datasets
public $ludicrous_tables

$max_connections public property

The maximum number of db links to keep open. The least-recently used link will be closed when the number of links exceeds this
public $max_connections

$open_connections public property

The list of unclosed connections sorted by LRU
public $open_connections

$persistent public property

Whether to use mysql_pconnect instead of mysql_connect
public $persistent

$reconnect_retries protected property

The number of times to retry reconnecting before dying
See also: wpdb::check_connection()
protected int $reconnect_retries
return integer

$save_backtrace public property

Whether to save debug_backtrace in save_query_callback. You may wish to disable this, e.g. when tracing out-of-memory problems.
public $save_backtrace

$save_queries public property

Whether to store queries in an array. Useful for debugging and profiling
public bool $save_queries
return boolean

$save_query_callback public property

Custom callback to save debug info in $this->queries
public $save_query_callback

$srtm public property

Otherwise it is an array of written tables
public $srtm

$used_servers public property

Lookup array (dbhname => (server, db name) ) for re-selecting the db when a link is re-used
public $used_servers