debug logging restructure
This commit is contained in:
parent
62f3d0ab00
commit
32bd2f7b0e
9 changed files with 108 additions and 85 deletions
|
@ -10,13 +10,13 @@ class WP_FFPC_Backend_apc extends WP_FFPC_Backend {
|
||||||
protected function _init () {
|
protected function _init () {
|
||||||
/* verify apc functions exist, apc extension is loaded */
|
/* verify apc functions exist, apc extension is loaded */
|
||||||
if ( ! function_exists( 'apc_cache_info' ) ) {
|
if ( ! function_exists( 'apc_cache_info' ) ) {
|
||||||
$this->log ( __translate__('APC extension missing', 'wp-ffpc' ) );
|
$this->log ( 'APC extension missing' );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* verify apc is working */
|
/* verify apc is working */
|
||||||
if ( apc_cache_info("user",true) ) {
|
if ( apc_cache_info("user",true) ) {
|
||||||
$this->log ( __translate__('backend OK', 'wp-ffpc' ) );
|
$this->log ( 'backend OK' );
|
||||||
$this->alive = true;
|
$this->alive = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,11 +79,11 @@ class WP_FFPC_Backend_apc extends WP_FFPC_Backend {
|
||||||
|
|
||||||
foreach ( $keys as $key => $dummy ) {
|
foreach ( $keys as $key => $dummy ) {
|
||||||
if ( ! apc_delete ( $key ) ) {
|
if ( ! apc_delete ( $key ) ) {
|
||||||
$this->log ( sprintf( __translate__( 'Failed to delete APC entry: %s', 'wp-ffpc' ), $key ), LOG_WARNING );
|
$this->log ( sprintf( 'Failed to delete APC entry: %s', $key ), LOG_WARNING );
|
||||||
//throw new Exception ( __translate__('Deleting APC entry failed with key ', $this->plugin_constant ) . $key );
|
//throw new Exception ( __translate__('Deleting APC entry failed with key ', $this->plugin_constant ) . $key );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->log ( sprintf( __translate__( 'APC entry delete: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'APC entry delete: %s', $key ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,13 @@ class WP_FFPC_Backend_apcu extends WP_FFPC_Backend {
|
||||||
protected function _init () {
|
protected function _init () {
|
||||||
/* verify apcu functions exist, apcu extension is loaded */
|
/* verify apcu functions exist, apcu extension is loaded */
|
||||||
if ( ! function_exists( 'apcu_cache_info' ) ) {
|
if ( ! function_exists( 'apcu_cache_info' ) ) {
|
||||||
$this->log ( __translate__('APCu extension missing', 'wp-ffpc' ) );
|
$this->log ( 'APCu extension missing' );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* verify apcu is working */
|
/* verify apcu is working */
|
||||||
if ( @apcu_cache_info("user") != false ) {
|
if ( @apcu_cache_info("user") != false ) {
|
||||||
$this->log ( __translate__('backend OK', 'wp-ffpc' ) );
|
$this->log ( 'backend OK' );
|
||||||
$this->alive = true;
|
$this->alive = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,11 +79,11 @@ class WP_FFPC_Backend_apcu extends WP_FFPC_Backend {
|
||||||
|
|
||||||
foreach ( $keys as $key => $dummy ) {
|
foreach ( $keys as $key => $dummy ) {
|
||||||
if ( ! apcu_delete ( $key ) ) {
|
if ( ! apcu_delete ( $key ) ) {
|
||||||
$this->log ( sprintf( __translate__( 'Failed to delete APC entry: %s', 'wp-ffpc' ), $key ), LOG_WARNING );
|
$this->log ( sprintf( 'Failed to delete APC entry: %s', $key ), LOG_WARNING );
|
||||||
//throw new Exception ( __translate__('Deleting APC entry failed with key ', 'wp-ffpc' ) . $key );
|
//throw new Exception ( __translate__('Deleting APC entry failed with key ', 'wp-ffpc' ) . $key );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->log ( sprintf( __translate__( 'APC entry delete: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'APC entry delete: %s', $key ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,13 +9,13 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
protected function _init () {
|
protected function _init () {
|
||||||
/* Memcached class does not exist, Memcache extension is not available */
|
/* Memcached class does not exist, Memcache extension is not available */
|
||||||
if (!class_exists('Memcache')) {
|
if (!class_exists('Memcache')) {
|
||||||
$this->log ( __translate__('PHP Memcache extension missing', 'wp-ffpc' ), LOG_WARNING );
|
$this->log ( 'PHP Memcache extension missing', LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check for existing server list, otherwise we cannot add backends */
|
/* check for existing server list, otherwise we cannot add backends */
|
||||||
if ( empty ( $this->options['servers'] ) && ! $this->alive ) {
|
if ( empty ( $this->options['servers'] ) && ! $this->alive ) {
|
||||||
$this->log ( __translate__("servers list is empty, init failed", 'wp-ffpc' ), LOG_WARNING );
|
$this->log ( "servers list is empty, init failed", LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
|
|
||||||
/* check if initialization was success or not */
|
/* check if initialization was success or not */
|
||||||
if ( $this->connection === NULL ) {
|
if ( $this->connection === NULL ) {
|
||||||
$this->log ( __translate__( 'error initializing Memcache PHP extension, exiting', 'wp-ffpc' ) );
|
$this->log ( 'error initializing Memcache PHP extension, exiting' );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
else
|
else
|
||||||
$this->status[$server_id] = $this->connection->connect ( $server['host'] , $server['port'] );
|
$this->status[$server_id] = $this->connection->connect ( $server['host'] , $server['port'] );
|
||||||
|
|
||||||
$this->log ( sprintf( __translate__( '%s added', 'wp-ffpc' ), $server_id ) );
|
$this->log ( sprintf( '%s added', $server_id ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* backend is now alive */
|
/* backend is now alive */
|
||||||
|
@ -51,7 +51,7 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
*/
|
*/
|
||||||
protected function _status () {
|
protected function _status () {
|
||||||
/* server status will be calculated by getting server stats */
|
/* server status will be calculated by getting server stats */
|
||||||
$this->log ( __translate__("checking server statuses", 'wp-ffpc' ));
|
$this->log ( "checking server statuses" );
|
||||||
/* get servers statistic from connection */
|
/* get servers statistic from connection */
|
||||||
foreach ( $this->options['servers'] as $server_id => $server ) {
|
foreach ( $this->options['servers'] as $server_id => $server ) {
|
||||||
if ( $server['port'] === 0 )
|
if ( $server['port'] === 0 )
|
||||||
|
@ -59,9 +59,9 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
else
|
else
|
||||||
$this->status[$server_id] = $this->connection->getServerStatus( $server['host'], $server['port'] );
|
$this->status[$server_id] = $this->connection->getServerStatus( $server['host'], $server['port'] );
|
||||||
if ( $this->status[$server_id] == 0 )
|
if ( $this->status[$server_id] == 0 )
|
||||||
$this->log ( sprintf( __translate__( '%s server is down', 'wp-ffpc' ), $server_id ) );
|
$this->log ( sprintf( '%s server is down', $server_id ) );
|
||||||
else
|
else
|
||||||
$this->log ( sprintf( __translate__( '%s server is up & running', 'wp-ffpc' ), $server_id ) );
|
$this->log ( sprintf( '%s server is up & running', $server_id ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,10 +110,10 @@ class WP_FFPC_Backend_memcache extends WP_FFPC_Backend {
|
||||||
$kresult = $this->connection->delete( $key );
|
$kresult = $this->connection->delete( $key );
|
||||||
|
|
||||||
if ( $kresult === false ) {
|
if ( $kresult === false ) {
|
||||||
$this->log ( sprintf( __translate__( 'unable to delete entry: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'unable to delete entry: %s', $key ) );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->log ( sprintf( __translate__( 'entry deleted: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'entry deleted: %s', $key ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,13 +7,13 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
protected function _init () {
|
protected function _init () {
|
||||||
/* Memcached class does not exist, Memcached extension is not available */
|
/* Memcached class does not exist, Memcached extension is not available */
|
||||||
if (!class_exists('Memcached')) {
|
if (!class_exists('Memcached')) {
|
||||||
$this->log ( __translate__(' Memcached extension missing, wp-ffpc will not be able to function correctly!', 'wp-ffpc' ), LOG_WARNING );
|
$this->log ( ' Memcached extension missing, wp-ffpc will not be able to function correctly!', LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check for existing server list, otherwise we cannot add backends */
|
/* check for existing server list, otherwise we cannot add backends */
|
||||||
if ( empty ( $this->options['servers'] ) && ! $this->alive ) {
|
if ( empty ( $this->options['servers'] ) && ! $this->alive ) {
|
||||||
$this->log ( __translate__("Memcached servers list is empty, init failed", 'wp-ffpc' ), LOG_WARNING );
|
$this->log ( "Memcached servers list is empty, init failed", LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
|
|
||||||
/* check if initialization was success or not */
|
/* check if initialization was success or not */
|
||||||
if ( $this->connection === NULL ) {
|
if ( $this->connection === NULL ) {
|
||||||
$this->log ( __translate__( 'error initializing Memcached PHP extension, exiting', 'wp-ffpc' ) );
|
$this->log ( 'error initializing Memcached PHP extension, exiting' );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
/* only add servers that does not exists already in connection pool */
|
/* only add servers that does not exists already in connection pool */
|
||||||
if ( !@array_key_exists($server_id , $servers_alive ) ) {
|
if ( !@array_key_exists($server_id , $servers_alive ) ) {
|
||||||
$this->connection->addServer( $server['host'], $server['port'] );
|
$this->connection->addServer( $server['host'], $server['port'] );
|
||||||
$this->log ( sprintf( __translate__( '%s added', 'wp-ffpc' ), $server_id ) );
|
$this->log ( sprintf( '%s added', $server_id ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
*/
|
*/
|
||||||
protected function _status () {
|
protected function _status () {
|
||||||
/* server status will be calculated by getting server stats */
|
/* server status will be calculated by getting server stats */
|
||||||
$this->log ( __translate__("checking server statuses", 'wp-ffpc' ));
|
$this->log ( "checking server statuses");
|
||||||
/* get server list from connection */
|
/* get server list from connection */
|
||||||
$servers = $this->connection->getServerList();
|
$servers = $this->connection->getServerList();
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
/* reset server status to offline */
|
/* reset server status to offline */
|
||||||
$this->status[$server_id] = 0;
|
$this->status[$server_id] = 0;
|
||||||
if ($this->connection->set('wp-ffpc', time())) {
|
if ($this->connection->set('wp-ffpc', time())) {
|
||||||
$this->log ( sprintf( __translate__( '%s server is up & running', 'wp-ffpc' ), $server_id ) );
|
$this->log ( sprintf( '%s server is up & running', $server_id ) );
|
||||||
$this->status[$server_id] = 1;
|
$this->status[$server_id] = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -113,9 +113,9 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
/* if storing failed, log the error code */
|
/* if storing failed, log the error code */
|
||||||
if ( $result === false ) {
|
if ( $result === false ) {
|
||||||
$code = $this->connection->getResultCode();
|
$code = $this->connection->getResultCode();
|
||||||
$this->log ( sprintf( __translate__( 'unable to set entry: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'unable to set entry: %s', $key ) );
|
||||||
$this->log ( sprintf( __translate__( 'Memcached error code: %s', 'wp-ffpc' ), $code ) );
|
$this->log ( sprintf( 'Memcached error code: %s', $code ) );
|
||||||
//throw new Exception ( __translate__('Unable to store Memcached entry ', 'wp-ffpc' ) . $key . __translate__( ', error code: ', 'wp-ffpc' ) . $code );
|
//throw new Exception ( 'Unable to store Memcached entry ' . $key . ', error code: ' . $code );
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
@ -146,11 +146,11 @@ class WP_FFPC_Backend_memcached extends WP_FFPC_Backend {
|
||||||
|
|
||||||
if ( $kresult === false ) {
|
if ( $kresult === false ) {
|
||||||
$code = $this->connection->getResultCode();
|
$code = $this->connection->getResultCode();
|
||||||
$this->log ( sprintf( __translate__( 'unable to delete entry: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'unable to delete entry: %s', $key ) );
|
||||||
$this->log ( sprintf( __translate__( 'Memcached error code: %s', 'wp-ffpc' ), $code ) );
|
$this->log ( sprintf( 'Memcached error code: %s', $code ) );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$this->log ( sprintf( __translate__( 'entry deleted: %s', 'wp-ffpc' ), $key ) );
|
$this->log ( sprintf( 'entry deleted: %s', $key ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
defined('ABSPATH') or die("Walk away.");
|
||||||
|
|
||||||
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
||||||
if ( !function_exists ('__translate__') ) {
|
if ( !function_exists ('__translate__') ) {
|
||||||
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
||||||
|
|
|
@ -1,64 +1,77 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
defined('ABSPATH') or die("Walk away.");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* advanced cache worker of WordPress plugin WP-FFPC
|
* advanced cache worker of WordPress plugin WP-FFPC
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( !function_exists ('__debug__') ) {
|
function __wp_ffpc_debug__ ( $text ) {
|
||||||
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
|
||||||
function __debug__ ( $text ) {
|
|
||||||
if ( defined('WP_FFPC__DEBUG_MODE') && WP_FFPC__DEBUG_MODE == true)
|
if ( defined('WP_FFPC__DEBUG_MODE') && WP_FFPC__DEBUG_MODE == true)
|
||||||
error_log ( __FILE__ . ': ' . $text );
|
error_log ( __FILE__ . ': ' . $text );
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/* check for WP cache enabled*/
|
/* check for WP cache enabled*/
|
||||||
if ( !WP_CACHE )
|
if ( !defined('WP_CACHE') || WP_CACHE != true ) {
|
||||||
|
__wp_ffpc_debug__('WP_CACHE is not true');
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* no cache for post request (comments, plugins and so on) */
|
/* no cache for post request (comments, plugins and so on) */
|
||||||
if ($_SERVER["REQUEST_METHOD"] == 'POST')
|
if ($_SERVER["REQUEST_METHOD"] == 'POST') {
|
||||||
|
__wp_ffpc_debug__('POST requests are never cached');
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to avoid enabling the cache if sessions are managed
|
* Try to avoid enabling the cache if sessions are managed
|
||||||
* with request parameters and a session is active
|
* with request parameters and a session is active
|
||||||
*/
|
*/
|
||||||
if (defined('SID') && SID != '')
|
if (defined('SID') && SID != '') {
|
||||||
|
__wp_ffpc_debug__('SID found, skipping cache');
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* check for config */
|
/* check for config */
|
||||||
if (!isset($wp_ffpc_config))
|
if (!isset($wp_ffpc_config)) {
|
||||||
|
__wp_ffpc_debug__('wp_ffpc_config variable not found');
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* request uri */
|
/* request uri */
|
||||||
$wp_ffpc_uri = $_SERVER['REQUEST_URI'];
|
$wp_ffpc_uri = $_SERVER['REQUEST_URI'];
|
||||||
|
|
||||||
/* no cache for robots.txt */
|
/* no cache for robots.txt */
|
||||||
if ( stripos($wp_ffpc_uri, 'robots.txt') ) {
|
if ( stripos($wp_ffpc_uri, 'robots.txt') ) {
|
||||||
__debug__ ( 'Skippings robots.txt hit');
|
__wp_ffpc_debug__ ( 'Skippings robots.txt hit');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* multisite files can be too large for memcached */
|
/* multisite files can be too large for memcached */
|
||||||
if ( function_exists('is_multisite') && stripos($wp_ffpc_uri, '/files/') && is_multisite() ) {
|
if ( function_exists('is_multisite') && stripos($wp_ffpc_uri, '/files/') && is_multisite() ) {
|
||||||
__debug__ ( 'Skippings multisite /files/ hit');
|
__wp_ffpc_debug__ ( 'Skippings multisite /files/ hit');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* check if config is network active: use network config */
|
/* check if config is network active: use network config */
|
||||||
if (!empty ( $wp_ffpc_config['network'] ) )
|
if (!empty ( $wp_ffpc_config['network'] ) ) {
|
||||||
$wp_ffpc_config = $wp_ffpc_config['network'];
|
$wp_ffpc_config = $wp_ffpc_config['network'];
|
||||||
|
__wp_ffpc_debug__('using "network" level config');
|
||||||
|
}
|
||||||
/* check if config is active for site : use site config */
|
/* check if config is active for site : use site config */
|
||||||
elseif ( !empty ( $wp_ffpc_config[ $_SERVER['HTTP_HOST'] ] ) )
|
elseif ( !empty ( $wp_ffpc_config[ $_SERVER['HTTP_HOST'] ] ) ) {
|
||||||
$wp_ffpc_config = $wp_ffpc_config[ $_SERVER['HTTP_HOST'] ];
|
$wp_ffpc_config = $wp_ffpc_config[ $_SERVER['HTTP_HOST'] ];
|
||||||
|
__wp_ffpc_debug__("using {$_SERVER['HTTP_HOST']} level config");
|
||||||
|
}
|
||||||
/* plugin config not found :( */
|
/* plugin config not found :( */
|
||||||
else
|
else {
|
||||||
|
__wp_ffpc_debug__("no usable config found");
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* no cache for uri with query strings, things usually go bad that way */
|
/* no cache for uri with query strings, things usually go bad that way */
|
||||||
if ( isset($wp_ffpc_config['nocache_dyn']) && !empty($wp_ffpc_config['nocache_dyn']) && stripos($wp_ffpc_uri, '?') !== false ) {
|
if ( isset($wp_ffpc_config['nocache_dyn']) && !empty($wp_ffpc_config['nocache_dyn']) && stripos($wp_ffpc_uri, '?') !== false ) {
|
||||||
__debug__ ( 'Dynamic url cache is disabled ( url with "?" ), skipping');
|
__wp_ffpc_debug__ ( 'Dynamic url cache is disabled ( url with "?" ), skipping');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +84,7 @@ if ( isset($wp_ffpc_config['nocache_cookies']) && !empty($wp_ffpc_config['nocach
|
||||||
/* check for any matches to user-added cookies to no-cache */
|
/* check for any matches to user-added cookies to no-cache */
|
||||||
foreach ( $nocache_cookies as $nocache_cookie ) {
|
foreach ( $nocache_cookies as $nocache_cookie ) {
|
||||||
if( strpos( $n, $nocache_cookie ) === 0 ) {
|
if( strpos( $n, $nocache_cookie ) === 0 ) {
|
||||||
__debug__ ( "Cookie exception matched: $n, skipping");
|
__wp_ffpc_debug__ ( "Cookie exception matched: {$n}, skipping");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -83,7 +96,7 @@ if ( isset($wp_ffpc_config['nocache_cookies']) && !empty($wp_ffpc_config['nocach
|
||||||
if ( isset($wp_ffpc_config['nocache_url']) && trim($wp_ffpc_config['nocache_url']) ) {
|
if ( isset($wp_ffpc_config['nocache_url']) && trim($wp_ffpc_config['nocache_url']) ) {
|
||||||
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_url']));
|
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_url']));
|
||||||
if ( preg_match($pattern, $wp_ffpc_uri) ) {
|
if ( preg_match($pattern, $wp_ffpc_uri) ) {
|
||||||
__debug__ ( "Cache exception based on URL regex pattern matched, skipping");
|
__wp_ffpc_debug__ ( "Cache exception based on URL regex pattern matched, skipping");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +118,7 @@ if ( !isset($wp_ffpc_config['cache_loggedin']) || $wp_ffpc_config['cache_loggedi
|
||||||
foreach ($_COOKIE as $n=>$v) {
|
foreach ($_COOKIE as $n=>$v) {
|
||||||
foreach ( $wp_ffpc_backend->cookies as $nocache_cookie ) {
|
foreach ( $wp_ffpc_backend->cookies as $nocache_cookie ) {
|
||||||
if( strpos( $n, $nocache_cookie ) === 0 ) {
|
if( strpos( $n, $nocache_cookie ) === 0 ) {
|
||||||
__debug__ ( "No cache for cookie: $n, skipping");
|
__wp_ffpc_debug__ ( "No cache for cookie: {$n}, skipping");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,7 +130,7 @@ $wp_ffpc_gentime = 0;
|
||||||
|
|
||||||
/* backend connection failed, no caching :( */
|
/* backend connection failed, no caching :( */
|
||||||
if ( $wp_ffpc_backend->status() === false ) {
|
if ( $wp_ffpc_backend->status() === false ) {
|
||||||
__debug__ ( "Backend offline, skipping");
|
__wp_ffpc_debug__ ( "Backend offline");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,13 +138,14 @@ if ( $wp_ffpc_backend->status() === false ) {
|
||||||
$wp_ffpc_keys = array ( 'meta' => $wp_ffpc_config['prefix_meta'], 'data' => $wp_ffpc_config['prefix_data'] );
|
$wp_ffpc_keys = array ( 'meta' => $wp_ffpc_config['prefix_meta'], 'data' => $wp_ffpc_config['prefix_data'] );
|
||||||
$wp_ffpc_values = array();
|
$wp_ffpc_values = array();
|
||||||
|
|
||||||
__debug__ ( "Trying to fetch entries");
|
__wp_ffpc_debug__ ( "Trying to fetch entries");
|
||||||
|
|
||||||
foreach ( $wp_ffpc_keys as $internal => $key ) {
|
foreach ( $wp_ffpc_keys as $internal => $key ) {
|
||||||
$key = $wp_ffpc_backend->key ( $key );
|
$key = $wp_ffpc_backend->key ( $key );
|
||||||
$value = $wp_ffpc_backend->get ( $key );
|
$value = $wp_ffpc_backend->get ( $key );
|
||||||
|
|
||||||
if ( ! $value ) {
|
if ( ! $value ) {
|
||||||
|
__wp_ffpc_debug__("No cached data foundd");
|
||||||
/* does not matter which is missing, we need both, if one fails, no caching */
|
/* does not matter which is missing, we need both, if one fails, no caching */
|
||||||
wp_ffpc_start();
|
wp_ffpc_start();
|
||||||
return;
|
return;
|
||||||
|
@ -139,12 +153,13 @@ foreach ( $wp_ffpc_keys as $internal => $key ) {
|
||||||
else {
|
else {
|
||||||
/* store results */
|
/* store results */
|
||||||
$wp_ffpc_values[ $internal ] = $value;
|
$wp_ffpc_values[ $internal ] = $value;
|
||||||
__debug__('Got value for ' . $internal);
|
__wp_ffpc_debug__('Got value for ' . $internal);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* serve cache 404 status */
|
/* serve cache 404 status */
|
||||||
if ( isset( $wp_ffpc_values['meta']['status'] ) && $wp_ffpc_values['meta']['status'] == 404 ) {
|
if ( isset( $wp_ffpc_values['meta']['status'] ) && $wp_ffpc_values['meta']['status'] == 404 ) {
|
||||||
|
__wp_ffpc_debug__("Serving 404");
|
||||||
header("HTTP/1.1 404 Not Found");
|
header("HTTP/1.1 404 Not Found");
|
||||||
/* if I kill the page serving here, the 404 page will not be showed at all, so we do not do that
|
/* if I kill the page serving here, the 404 page will not be showed at all, so we do not do that
|
||||||
* flush();
|
* flush();
|
||||||
|
@ -154,6 +169,7 @@ if ( isset( $wp_ffpc_values['meta']['status'] ) && $wp_ffpc_values['meta']['sta
|
||||||
|
|
||||||
/* server redirect cache */
|
/* server redirect cache */
|
||||||
if ( isset( $wp_ffpc_values['meta']['redirect'] ) && $wp_ffpc_values['meta']['redirect'] ) {
|
if ( isset( $wp_ffpc_values['meta']['redirect'] ) && $wp_ffpc_values['meta']['redirect'] ) {
|
||||||
|
__wp_ffpc_debug__("Serving redirect to {$wp_ffpc_values['meta']['redirect']}");
|
||||||
header('Location: ' . $wp_ffpc_values['meta']['redirect'] );
|
header('Location: ' . $wp_ffpc_values['meta']['redirect'] );
|
||||||
/* cut the connection as fast as possible */
|
/* cut the connection as fast as possible */
|
||||||
flush();
|
flush();
|
||||||
|
@ -165,6 +181,7 @@ if ( array_key_exists( "HTTP_IF_MODIFIED_SINCE" , $_SERVER ) && !empty( $wp_ffpc
|
||||||
$if_modified_since = strtotime(preg_replace('/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"]));
|
$if_modified_since = strtotime(preg_replace('/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"]));
|
||||||
/* check is cache is still valid */
|
/* check is cache is still valid */
|
||||||
if ( $if_modified_since >= $wp_ffpc_values['meta']['lastmodified'] ) {
|
if ( $if_modified_since >= $wp_ffpc_values['meta']['lastmodified'] ) {
|
||||||
|
__wp_ffpc_debug__("Serving 304 Not Modified");
|
||||||
header("HTTP/1.0 304 Not Modified");
|
header("HTTP/1.0 304 Not Modified");
|
||||||
/* connection cut for faster serving */
|
/* connection cut for faster serving */
|
||||||
flush();
|
flush();
|
||||||
|
@ -238,6 +255,7 @@ if ( isset($wp_ffpc_config['generate_time']) && $wp_ffpc_config['generate_time']
|
||||||
$wp_ffpc_values['data'] = substr_replace( $wp_ffpc_values['data'], $insertion, $index, 0);
|
$wp_ffpc_values['data'] = substr_replace( $wp_ffpc_values['data'], $insertion, $index, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__wp_ffpc_debug__("Serving data");
|
||||||
echo trim($wp_ffpc_values['data']);
|
echo trim($wp_ffpc_values['data']);
|
||||||
|
|
||||||
flush();
|
flush();
|
||||||
|
@ -303,9 +321,9 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
|
|
||||||
if ( isset($wp_ffpc_config[ 'nocache_comment' ]) && !empty($wp_ffpc_config[ 'nocache_comment' ]) && trim($wp_ffpc_config[ 'nocache_comment' ])) {
|
if ( isset($wp_ffpc_config[ 'nocache_comment' ]) && !empty($wp_ffpc_config[ 'nocache_comment' ]) && trim($wp_ffpc_config[ 'nocache_comment' ])) {
|
||||||
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_comment']));
|
$pattern = sprintf('#%s#', trim($wp_ffpc_config['nocache_comment']));
|
||||||
__debug__ ( sprintf("Testing comment with pattern: %s", $pattern));
|
__wp_ffpc_debug__ ( sprintf("Testing comment with pattern: %s", $pattern));
|
||||||
if ( preg_match($pattern, $buffer) ) {
|
if ( preg_match($pattern, $buffer) ) {
|
||||||
__debug__ ( "Cache exception based on content regex pattern matched, skipping");
|
__wp_ffpc_debug__ ( "Cache exception based on content regex pattern matched, skipping");
|
||||||
return $buffer;
|
return $buffer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -320,7 +338,7 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
$meta['expire'] = time() + $wp_ffpc_config['browsercache_home'];
|
$meta['expire'] = time() + $wp_ffpc_config['browsercache_home'];
|
||||||
}
|
}
|
||||||
|
|
||||||
__debug__( 'Getting latest post for for home & feed');
|
__wp_ffpc_debug__( 'Getting latest post for for home & feed');
|
||||||
/* get newest post and set last modified accordingly */
|
/* get newest post and set last modified accordingly */
|
||||||
$args = array(
|
$args = array(
|
||||||
'numberposts' => 1,
|
'numberposts' => 1,
|
||||||
|
@ -347,7 +365,7 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
global $wp_query;
|
global $wp_query;
|
||||||
|
|
||||||
if ( null != $wp_query->tax_query && !empty($wp_query->tax_query)) {
|
if ( null != $wp_query->tax_query && !empty($wp_query->tax_query)) {
|
||||||
__debug__( 'Getting latest post for taxonomy: ' . json_encode($wp_query->tax_query));
|
__wp_ffpc_debug__( 'Getting latest post for taxonomy: ' . json_encode($wp_query->tax_query));
|
||||||
|
|
||||||
$args = array(
|
$args = array(
|
||||||
'numberposts' => 1,
|
'numberposts' => 1,
|
||||||
|
@ -439,6 +457,13 @@ function wp_ffpc_callback( $buffer ) {
|
||||||
$to_store = substr_replace( $buffer, $insertion, $index, 0);
|
$to_store = substr_replace( $buffer, $insertion, $index, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
if ( isset($wp_ffpc_config['relative_links']) && $wp_ffpc_config['relative_links'] == '1' ) {
|
||||||
|
$domain = parse_url(get_bloginfo('url'), PHP_URL_HOST);
|
||||||
|
$to_store = str_replace ( array("https://${domain}/", "http://${domain}/", "https://${domain}", "http://${domain}"), "/", $to_store);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
$prefix_meta = $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_meta'] );
|
$prefix_meta = $wp_ffpc_backend->key ( $wp_ffpc_config['prefix_meta'] );
|
||||||
$wp_ffpc_backend->set ( $prefix_meta, $meta );
|
$wp_ffpc_backend->set ( $prefix_meta, $meta );
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
defined('ABSPATH') or die("Walk away.");
|
||||||
if ( !function_exists ('__translate__') ) {
|
|
||||||
/* __ only availabe if we're running from the inside of wordpress, not in advanced-cache.php phase */
|
|
||||||
if ( function_exists ( '__' ) ) {
|
|
||||||
function __translate__ ( $text, $domain ) { return __($text, $domain); }
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
function __translate__ ( $text, $domain ) { return $text; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* this is the base class for all backends; the actual workers
|
/* this is the base class for all backends; the actual workers
|
||||||
* are included at the end of the file from backends/ directory */
|
* are included at the end of the file from backends/ directory */
|
||||||
|
@ -71,7 +62,7 @@ abstract class WP_FFPC_Backend {
|
||||||
$this->set_servers();
|
$this->set_servers();
|
||||||
|
|
||||||
/* info level */
|
/* info level */
|
||||||
$this->log ( __translate__('init starting', 'wp-ffpc'));
|
$this->log ( 'init starting' );
|
||||||
|
|
||||||
/* call backend initiator based on cache type */
|
/* call backend initiator based on cache type */
|
||||||
$init = $this->_init();
|
$init = $this->_init();
|
||||||
|
@ -137,9 +128,9 @@ abstract class WP_FFPC_Backend {
|
||||||
|
|
||||||
$key = $prefix . $key_base;
|
$key = $prefix . $key_base;
|
||||||
|
|
||||||
$this->log ( sprintf( __translate__( 'original key configuration: %s', 'wp-ffpc'), $this->options['key'] ) );
|
$this->log ( sprintf( 'original key configuration: %s', $this->options['key'] ) );
|
||||||
$this->log ( sprintf( __translate__( 'setting key for: %s', 'wp-ffpc'), $key_base ) );
|
$this->log ( sprintf( 'setting key for: %s', $key_base ) );
|
||||||
$this->log ( sprintf( __translate__( 'setting key to: %s', 'wp-ffpc'), $key ) );
|
$this->log ( sprintf( 'setting key to: %s', $key ) );
|
||||||
return $key;
|
return $key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,12 +150,12 @@ abstract class WP_FFPC_Backend {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* log the current action */
|
/* log the current action */
|
||||||
$this->log ( sprintf( __translate__( 'GET %s', 'wp-ffpc'), $key ) );
|
$this->log ( sprintf( 'GET %s', $key ) );
|
||||||
|
|
||||||
$result = $this->_get( $key );
|
$result = $this->_get( $key );
|
||||||
|
|
||||||
if ( $result === false || $result === null )
|
if ( $result === false || $result === null )
|
||||||
$this->log ( sprintf( __translate__( 'failed to get entry: %s', 'wp-ffpc'), $key ) );
|
$this->log ( sprintf( 'failed to get entry: %s', $key ) );
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -183,7 +174,7 @@ abstract class WP_FFPC_Backend {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
/* log the current action */
|
/* log the current action */
|
||||||
$this->log ( sprintf( __translate__( 'set %s expiration time: %s', 'wp-ffpc'), $key, $this->options['expire'] ) );
|
$this->log ( sprintf( 'set %s expiration time: %s', $key, $this->options['expire'] ) );
|
||||||
|
|
||||||
/* expiration time based is based on type from now on */
|
/* expiration time based is based on type from now on */
|
||||||
/* fallback */
|
/* fallback */
|
||||||
|
@ -196,13 +187,13 @@ abstract class WP_FFPC_Backend {
|
||||||
$expire = (int) $this->options['expire_taxonomy'];
|
$expire = (int) $this->options['expire_taxonomy'];
|
||||||
|
|
||||||
/* log the current action */
|
/* log the current action */
|
||||||
$this->log ( sprintf( __translate__( 'SET %s', 'wp-ffpc'), $key ) );
|
$this->log ( sprintf( 'SET %s', $key ) );
|
||||||
/* proxy to internal function */
|
/* proxy to internal function */
|
||||||
$result = $this->_set( $key, $data, $expire );
|
$result = $this->_set( $key, $data, $expire );
|
||||||
|
|
||||||
/* check result validity */
|
/* check result validity */
|
||||||
if ( $result === false || $result === null )
|
if ( $result === false || $result === null )
|
||||||
$this->log ( sprintf( __translate__( 'failed to set entry: %s', 'wp-ffpc'), $key ), LOG_WARNING );
|
$this->log ( sprintf( 'failed to set entry: %s', $key ), LOG_WARNING );
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -231,20 +222,20 @@ abstract class WP_FFPC_Backend {
|
||||||
|
|
||||||
/* exit if no post_id is specified */
|
/* exit if no post_id is specified */
|
||||||
if ( empty ( $post_id ) && $force === false ) {
|
if ( empty ( $post_id ) && $force === false ) {
|
||||||
$this->log ( __translate__('not clearing unidentified post ', 'wp-ffpc'), LOG_WARNING );
|
$this->log ( 'not clearing unidentified post', LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if invalidation method is set to full, flush cache */
|
/* if invalidation method is set to full, flush cache */
|
||||||
if ( ( $this->options['invalidation_method'] === 0 || $force === true ) ) {
|
if ( ( $this->options['invalidation_method'] === 0 || $force === true ) ) {
|
||||||
/* log action */
|
/* log action */
|
||||||
$this->log ( __translate__('flushing cache', 'wp-ffpc') );
|
$this->log ( 'flushing cache' );
|
||||||
|
|
||||||
/* proxy to internal function */
|
/* proxy to internal function */
|
||||||
$result = $this->_flush();
|
$result = $this->_flush();
|
||||||
|
|
||||||
if ( $result === false )
|
if ( $result === false )
|
||||||
$this->log ( __translate__('failed to flush cache', 'wp-ffpc'), LOG_WARNING );
|
$this->log ( 'failed to flush cache', LOG_WARNING );
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
@ -281,7 +272,7 @@ abstract class WP_FFPC_Backend {
|
||||||
|
|
||||||
/* no path, don't do anything */
|
/* no path, don't do anything */
|
||||||
if ( empty( $permalink ) && $permalink != false ) {
|
if ( empty( $permalink ) && $permalink != false ) {
|
||||||
$this->log ( sprintf( __translate__( 'unable to determine path from Post Permalink, post ID: %s', 'wp-ffpc'), $post_id ), LOG_WARNING );
|
$this->log ( sprintf( 'unable to determine path from Post Permalink, post ID: %s', $post_id ), LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -437,7 +428,7 @@ abstract class WP_FFPC_Backend {
|
||||||
*/
|
*/
|
||||||
protected function is_alive() {
|
protected function is_alive() {
|
||||||
if ( ! $this->alive ) {
|
if ( ! $this->alive ) {
|
||||||
$this->log ( __translate__("backend is not active, exiting function ", 'wp-ffpc') . __FUNCTION__, LOG_WARNING );
|
$this->log ( "backend is not active, exiting function " . __FUNCTION__, LOG_WARNING );
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
defined('ABSPATH') or die("Walk away.");
|
||||||
|
|
||||||
if ( ! class_exists( 'WP_FFPC' ) ) :
|
if ( ! class_exists( 'WP_FFPC' ) ) :
|
||||||
|
|
||||||
/* get the plugin abstract class*/
|
/* get the plugin abstract class*/
|
||||||
|
@ -136,8 +138,9 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
|
||||||
'redis' => __( 'Redis (experimental, it will break!)' , 'wp-ffpc'),
|
'redis' => __( 'Redis (experimental, it will break!)' , 'wp-ffpc'),
|
||||||
);
|
);
|
||||||
/* check for required functions / classes for the cache types */
|
/* check for required functions / classes for the cache types */
|
||||||
|
|
||||||
$this->valid_cache_type = array (
|
$this->valid_cache_type = array (
|
||||||
'apc' => function_exists( 'apc_cache_info' ) ? true : false,
|
'apc' => (function_exists( 'apc_cache_info' ) && version_compare(PHP_VERSION, '5.3.0') <= 0 ) ? true : false,
|
||||||
'apcu' => function_exists( 'apcu_cache_info' ) ? true : false,
|
'apcu' => function_exists( 'apcu_cache_info' ) ? true : false,
|
||||||
'memcache' => class_exists ( 'Memcache') ? true : false,
|
'memcache' => class_exists ( 'Memcache') ? true : false,
|
||||||
'memcached' => class_exists ( 'Memcached') ? true : false,
|
'memcached' => class_exists ( 'Memcached') ? true : false,
|
||||||
|
@ -148,8 +151,7 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
|
||||||
$this->select_invalidation_method = array (
|
$this->select_invalidation_method = array (
|
||||||
0 => __( 'flush cache' , 'wp-ffpc'),
|
0 => __( 'flush cache' , 'wp-ffpc'),
|
||||||
1 => __( 'only modified post' , 'wp-ffpc'),
|
1 => __( 'only modified post' , 'wp-ffpc'),
|
||||||
2 => __( 'modified post and all taxonomies' , 'wp-ffpc'),
|
2 => __( 'modified post and all related taxonomies' , 'wp-ffpc'),
|
||||||
3 => __( 'modified post and posts index page' , 'wp-ffpc'),
|
|
||||||
);
|
);
|
||||||
|
|
||||||
/* map of possible key masks */
|
/* map of possible key masks */
|
||||||
|
@ -159,6 +161,7 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
|
||||||
'$request_uri' => __('The *original* request URI as received from the client including the args', 'wp-ffpc'),
|
'$request_uri' => __('The *original* request URI as received from the client including the args', 'wp-ffpc'),
|
||||||
'$remote_user' => __('Name of user, authenticated by the Auth Basic Module', 'wp-ffpc'),
|
'$remote_user' => __('Name of user, authenticated by the Auth Basic Module', 'wp-ffpc'),
|
||||||
'$cookie_PHPSESSID' => __('PHP Session Cookie ID, if set ( empty if not )', 'wp-ffpc'),
|
'$cookie_PHPSESSID' => __('PHP Session Cookie ID, if set ( empty if not )', 'wp-ffpc'),
|
||||||
|
'$accept_lang' => __('First HTTP Accept Lang set in the HTTP request', 'wp-ffpc'),
|
||||||
//'$cookie_COOKnginy IE' => __('Value of COOKIE', 'wp-ffpc'),
|
//'$cookie_COOKnginy IE' => __('Value of COOKIE', 'wp-ffpc'),
|
||||||
//'$http_HEADER' => __('Value of HTTP request header HEADER ( lowercase, dashes converted to underscore )', 'wp-ffpc'),
|
//'$http_HEADER' => __('Value of HTTP request header HEADER ( lowercase, dashes converted to underscore )', 'wp-ffpc'),
|
||||||
//'$query_string' => __('Full request URI after rewrites', 'wp-ffpc'),
|
//'$query_string' => __('Full request URI after rewrites', 'wp-ffpc'),
|
||||||
|
@ -576,8 +579,7 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
|
||||||
$invalidation_method_description = array(
|
$invalidation_method_description = array(
|
||||||
'clears everything in storage, <strong>including values set by other applications</strong>',
|
'clears everything in storage, <strong>including values set by other applications</strong>',
|
||||||
'clear only the modified posts entry, everything else remains in cache',
|
'clear only the modified posts entry, everything else remains in cache',
|
||||||
'removes all taxonomy term cache ( categories, tags, home, etc ) and the modified post as well<br><strong>Caution! Slows down page/post saving when there are many tags.</strong>',
|
'unvalidates post and the taxonomy related to the post',
|
||||||
'clear cache for modified post and posts index page'
|
|
||||||
);
|
);
|
||||||
foreach ($this->select_invalidation_method AS $current_key => $current_invalidation_method) {
|
foreach ($this->select_invalidation_method AS $current_key => $current_invalidation_method) {
|
||||||
printf('<li><em>%1$s</em> - %2$s</li>', $current_invalidation_method, $invalidation_method_description[$current_key]);
|
printf('<li><em>%1$s</em> - %2$s</li>', $current_invalidation_method, $invalidation_method_description[$current_key]);
|
||||||
|
|
|
@ -25,6 +25,8 @@ License: GPLv3
|
||||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
defined('ABSPATH') or die("Walk away.");
|
||||||
|
|
||||||
include_once ( 'wp-ffpc-class.php' );
|
include_once ( 'wp-ffpc-class.php' );
|
||||||
|
|
||||||
$wp_ffpc_defaults = array (
|
$wp_ffpc_defaults = array (
|
||||||
|
|
Loading…
Reference in a new issue