-
Notifications
You must be signed in to change notification settings - Fork 90
/
Copy pathDbCache_Wpdb.php
60 lines (48 loc) · 1.4 KB
/
DbCache_Wpdb.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
<?php
namespace W3TC;
/**
* class Db
* Database access mediator
*/
class DbCache_Wpdb extends DbCache_WpdbBase {
/**
* Returns object instance. Called by WP engine
*
* @return DbCache_Wpdb
*/
static function instance() {
static $instance = null;
if ( is_null( $instance ) ) {
$processors = array();
$call_default_constructor = true;
// no caching during activation
$is_installing = ( defined( 'WP_INSTALLING' ) && WP_INSTALLING );
$config = Dispatcher::config();
if ( !$is_installing && $config->get_boolean( 'dbcache.enabled' ) ) {
$processors[] = new DbCache_WpdbInjection_QueryCaching();
}
if ( Util_Environment::is_dbcluster( $config ) ) {
// dbcluster use mysqli only since other is obsolete now
if ( !defined( 'WP_USE_EXT_MYSQL' ) ) {
define( 'WP_USE_EXT_MYSQL', false );
}
$processors[] = new Enterprise_Dbcache_WpdbInjection_Cluster();
}
$processors[] = new DbCache_WpdbInjection();
global $wp_version;
if (version_compare( $wp_version, '5.3') >= 0) {
$o = new DbCache_WpdbNew( $processors );
} else {
$o = new DbCache_WpdbLegacy( $processors );
}
$next_injection = new _CallUnderlying( $o );
foreach ( $processors as $processor ) {
$processor->initialize_injection( $o, $next_injection );
}
// initialize after processors configured
$o->initialize();
$instance = $o;
}
return $instance;
}
}