From 6b44aaeeff3537d4032609561cc350c5b082a744 Mon Sep 17 00:00:00 2001 From: Nawawi Jamili Date: Sat, 28 Nov 2020 02:47:21 +0800 Subject: [PATCH] bump 20.10.08 - Fixed WP_Object_Cache::dc_save() -> cache meta data type, change string to array if original data serialized. - Fixed WP_Object_Cache::dc_save() -> wrong logic causes a random delay if array size more than 1MB. --- changelog.txt | 5 ++ docket-cache.php | 4 +- includes/cache.php | 20 +++---- includes/object-cache.php | 2 +- includes/src/Canopt.php | 10 ++-- includes/src/Crawler.php | 2 +- includes/src/Filesystem.php | 38 +++++++------ includes/src/Plugin.php | 103 +++++++++++++++++++----------------- languages/docket-cache.pot | 22 ++++---- readme.txt | 17 +++--- 10 files changed, 123 insertions(+), 100 deletions(-) diff --git a/changelog.txt b/changelog.txt index 7ffa66b..d29e3fd 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,8 @@ += 20.10.08 (2020-11-28) + +- Fixed WP_Object_Cache::dc_save() -> cache meta data type, change string to array if original data serialized. +- Fixed WP_Object_Cache::dc_save() -> wrong logic causes a random delay if array size more than 1MB. + = 20.10.07 (2020-11-26) - Fixed Tweaks::misc() -> removed deprecated jetpack hook instagram_cache_oembed_api_response_body. diff --git a/docket-cache.php b/docket-cache.php index 03eca98..b023ddb 100644 --- a/docket-cache.php +++ b/docket-cache.php @@ -12,8 +12,8 @@ * @wordpress-plugin * Plugin Name: Docket Cache * Plugin URI: https://wordpress.org/plugins/docket-cache/ - * Version: 20.10.07 - * VerPrev: 20.10.06 + * Version: 20.10.08 + * VerPrev: 20.10.07 * Description: A persistent object cache stored as a plain PHP code, accelerates caching with OPcache backend. * GitHub Plugin URI: https://github.com/nawawi/docket-cache * Author: Nawawi Jamili diff --git a/includes/cache.php b/includes/cache.php index 9921611..37d4d67 100644 --- a/includes/cache.php +++ b/includes/cache.php @@ -668,7 +668,7 @@ private function maybe_expire($group, $expire = 0, $key = '') $expire = 0; } - $expire = $this->fs()->sanitize_second($expire); + $expire = $this->fs()->sanitize_timestamp($expire); $maxttl = $this->cache_maxttl; if (0 === $expire && $maxttl < 2419200) { @@ -959,6 +959,7 @@ private function dc_code($file, $arr) return false; } + // jangan gatai tangan usik. same with strlen(serialize($arr)) $len = \strlen($data); if ($len >= $this->cache_maxsize) { $this->dc_log('err', $fname, 'Data too large: '.$len.'/'.$this->cache_maxsize); @@ -979,6 +980,7 @@ private function dc_code($file, $arr) return false; } + // remove lock $this->fs()->validate_fatal_error_file($file); return $stat; @@ -1038,29 +1040,23 @@ private function dc_save($cache_key, $data, $group = 'default', $expire = 0, $ke if ($this->multisite) { // try to avoid error-prone - // in rare condition, get_current_network_id not exists. + // in rare condition, get_current_network_id dependencies not load properly. try { $meta['network_id'] = get_current_network_id(); - } catch (\Exception $e) { + } catch (\Throwable $e) { $meta['network_id'] = 0; } } + $final_type = \gettype($data); + $meta['site_id'] = get_current_blog_id(); $meta['group'] = $group; $meta['key'] = $cache_key; - $meta['type'] = $type; + $meta['type'] = $final_type; $meta['timeout'] = $timeout; $meta['data'] = $data; - // array size max to 1M to avoid fatal error in some hosting. - $meta_len = \count($meta, true); - if ($meta_len >= 1000000) { - $this->dc_log('err', $group.':'.$cache_key, 'Object too large: '.$meta_len.'/1000000'); - - return false; - } - if (true === $this->dc_code($file, $meta)) { // if 0 let gc handle it by comparing file mtime. if ($timeout > 0) { diff --git a/includes/object-cache.php b/includes/object-cache.php index 9b6b02d..e541471 100644 --- a/includes/object-cache.php +++ b/includes/object-cache.php @@ -3,7 +3,7 @@ * @wordpress-plugin * Plugin Name: Docket Cache Drop-in * Plugin URI: https://wordpress.org/plugins/docket-cache/ - * Version: 20.10.07 + * Version: 20.10.08 * Description: A persistent object cache stored as a plain PHP code, accelerates caching with OPcache backend. * Author: Nawawi Jamili * Author URI: https://docketcache.com diff --git a/includes/src/Canopt.php b/includes/src/Canopt.php index d57c1f9..e029a61 100644 --- a/includes/src/Canopt.php +++ b/includes/src/Canopt.php @@ -116,7 +116,7 @@ public function keys($key = false) return array_keys($data); } - private function read_config($file = '', $force = false) + private function read_config($file = '', $force = false, &$error = '') { $file = empty($file) ? $this->file : $file; $config = []; @@ -126,7 +126,11 @@ private function read_config($file = '', $force = false) $this->opcache_flush($file); } - $config = @include $file; + try { + $config = @include $file; + } catch (\Throwable $e) { + $error = $e->getMessage(); + } } return $config; @@ -241,7 +245,7 @@ public function clear_lock() foreach ($files as $file) { if (@is_file($file) && @is_writable($file)) { if (\defined('DocketCache_CLI') && DocketCache_CLI) { - fwrite(STDOUT, basename($file).PHP_EOL); + @fwrite(STDOUT, basename($file).PHP_EOL); } @unlink($file); } diff --git a/includes/src/Crawler.php b/includes/src/Crawler.php index c279fb9..dcce1ae 100644 --- a/includes/src/Crawler.php +++ b/includes/src/Crawler.php @@ -14,7 +14,7 @@ final class Crawler { - private static $version = '20.10.07'; + private static $version = '20.10.08'; public static $send_cookie = false; private static function default_args($param = []) diff --git a/includes/src/Filesystem.php b/includes/src/Filesystem.php index 851e870..b8242c8 100644 --- a/includes/src/Filesystem.php +++ b/includes/src/Filesystem.php @@ -631,7 +631,7 @@ public function validate_fatal_error_file($file) return; } - $fm = time() - 300; // 5m + $fm = time() - 10; // 10s if ($fm > @filemtime($file_fatal)) { if ($this->validate_file($file)) { @unlink($file_fatal); @@ -644,11 +644,20 @@ public function validate_fatal_error_file($file) } } - private function suspend_cache_file($file, $error) + private function suspend_cache_file($file, $error, $seconds = 0) { + $seconds = (int) $seconds; $file_fatal = $this->get_fatal_error_filename($file); - return @file_put_contents($file_fatal, date('Y-m-d H:i:s T').PHP_EOL.$error, LOCK_EX); + if (@file_put_contents($file_fatal, date('Y-m-d H:i:s T').PHP_EOL.$error, LOCK_EX)) { + if ($seconds > 0) { + @touch($file, time() + $seconds); + } + + return true; + } + + return false; } public function capture_fatal_error() @@ -663,8 +672,11 @@ function () { $file_fatal = $this->get_fatal_error_filename($file_error); $error['file'] = str_replace(ABSPATH, '/', $file_error); - @file_put_contents($file_error, 'suspend_cache_file($file_fatal, $this->export_var($error))) { + $this->unlink($file_error, false); + + // 300s = 5m delay + if ($this->suspend_cache_file($file_fatal, $this->export_var($error), 300)) { + // refresh page if possible if ('cli' !== \PHP_SAPI && !wp_doing_ajax()) { echo ''; } @@ -692,9 +704,10 @@ public function cache_get($file) return false; } - // handle error incase not throwable + // capture none throwable $this->capture_fatal_error(); + // cache data $data = []; // include when we can read, try to avoid fatal error. @@ -705,11 +718,6 @@ public function cache_get($file) } catch (\Throwable $e) { $error = $e->getMessage(); - // cleanup - if (false !== strpos($error, 'not found') && @preg_match('@Class.*not found@', $error)) { - $this->unlink($file, false); - } - // delay $this->suspend_cache_file($file, $error); @@ -826,9 +834,9 @@ public function internal_group($group) } /** - * sanitize_second. + * sanitize_timestamp. */ - public function sanitize_second($time) + public function sanitize_timestamp($time) { $time = (int) $time; if ($time < 0) { @@ -848,7 +856,7 @@ public function sanitize_second($time) */ public function sanitize_maxttl($seconds) { - $seconds = $this->sanitize_second($seconds); + $seconds = $this->sanitize_timestamp($seconds); // 86400 = 1d // 345600 = 4d @@ -888,7 +896,7 @@ public function sanitize_maxfile($maxfile) */ public function valid_timestamp($timestamp) { - $timestamp = $this->sanitize_second($timestamp); + $timestamp = $this->sanitize_timestamp($timestamp); return $timestamp > 0; } diff --git a/includes/src/Plugin.php b/includes/src/Plugin.php index 319d554..4ea440b 100644 --- a/includes/src/Plugin.php +++ b/includes/src/Plugin.php @@ -999,55 +999,60 @@ private function register_admin_hooks() function () { $cap = is_multisite() ? 'manage_network_options' : 'manage_options'; $order = is_multisite() ? '25.1' : '80.1'; - $icon = 'PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJ'; - $icon .= 'QyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8y'; - $icon .= 'MDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4'; - $icon .= 'bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMzAwLjAwMDAwMHB0IiBo'; - $icon .= 'ZWlnaHQ9IjMwMC4wMDAwMDBwdCIgdmlld0JveD0iMCAwIDMwMC4wMDAwMDAgMzAwLjAwMDAwMCIK'; - $icon .= 'IHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIG1lZXQiPgoKPGcgdHJhbnNmb3JtPSJ0cmFu'; - $icon .= 'c2xhdGUoMC4wMDAwMDAsMzAwLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSIKZmls'; - $icon .= 'bD0iI2JhYmFiYSIgc3Ryb2tlPSJub25lIj4KPHBhdGggZD0iTTEyODUgMjk5NCBjLTcwIC0xMSAt'; - $icon .= 'MjUwIC01NyAtMjkwIC03NCAtMTEgLTUgLTQzIC0xOCAtNzEgLTI5IC0yOAotMTEgLTc1IC0zMyAt'; - $icon .= 'MTA2IC00OSAtMzEgLTE3IC01OSAtMjggLTYyIC0yNSAtMyA0IC02IDEgLTYgLTUgMCAtNyAtNiAt'; - $icon .= 'MTIKLTE0IC0xMiAtOCAwIC0xNiAtMyAtMTggLTcgLTIgLTUgLTMwIC0yNiAtNjMgLTQ4IC04NiAt'; - $icon .= 'NTggLTk5IC02OCAtMjE1IC0xODUKLTExNyAtMTE2IC0xMjcgLTEyOSAtMTg1IC0yMTUgLTIyIC0z'; - $icon .= 'MyAtNDMgLTYxIC00NyAtNjMgLTUgLTIgLTggLTEwIC04IC0xOCAwCi04IC01IC0xNCAtMTIgLTE0'; - $icon .= 'IC02IDAgLTkgLTMgLTUgLTYgMyAtMyAtOCAtMzEgLTI1IC02MiAtMTYgLTMxIC0zOCAtNzggLTQ5'; - $icon .= 'Ci0xMDYgLTExIC0yOCAtMjQgLTYwIC0yOSAtNzEgLTEwIC0yMyAtMzEgLTk2IC01NyAtMjAwIC0y'; - $icon .= 'NiAtMTAyIC0yNiAtNTA4IDAKLTYxMCAyNSAtMTAxIDQ3IC0xNzcgNTcgLTIwMCA1IC0xMSAyNSAt'; - $icon .= 'NTggNDUgLTEwNSAxOSAtNDcgNDcgLTEwMiA2MCAtMTIyIDE0Ci0yMSAyNSAtNDQgMjUgLTUyIDAg'; - $icon .= 'LTggMyAtMTYgOCAtMTggMTAgLTUgNjQgLTc4IDU3IC03OCAtNCAwIDAgLTYgNyAtMTQgNyAtNwoz'; - $icon .= 'MyAtMzcgNTggLTY3IDYxIC03MyAxMDcgLTEyMCAxNTggLTE2MyAyNCAtMjAgNDAgLTM2IDM1IC0z'; - $icon .= 'NiAtNCAwIDIgLTYgMTQKLTEzIDEyIC02IDY2IC00MiAxMjAgLTc4IDU0IC0zNyAxMzAgLTgyIDE2'; - $icon .= 'OCAtMTAwIDM5IC0xOCA3MyAtMzcgNzYgLTQyIDMgLTUKMTAgLTggMTUgLTggNSAxIDQzIC0xMCA4'; - $icon .= 'NCAtMjMgMTg1IC02MCAyOTIgLTc2IDQ5NSAtNzUgMTk4IDAgMzIxIDIwIDQ4NSA3NQozMjMgMTEw'; - $icon .= 'IDU5NCAzMjUgNzg1IDYyMiA3NiAxMTkgMTUwIDI5MCAxODUgNDMyIDI2IDEwMCAzOSAyMjMgMzkg'; - $icon .= 'MzY1IDEgMjAzCi0xNyAzMjIgLTc0IDQ5MCAtMTMgMzkgLTI1IDc3IC0yNyA4NSAtMiA4IC02IDE3'; - $icon .= 'IC05IDIwIC0zIDMgLTIwIDM3IC0zOCA3NQotMTggMzkgLTYzIDExNCAtMTAwIDE2OCAtMzYgNTQg'; - $icon .= 'LTcyIDEwOCAtNzggMTIwIC03IDEyIC0xMyAxOCAtMTMgMTQgMCAtNSAtMTYKMTEgLTM2IDM1IC00'; - $icon .= 'MyA1MSAtOTAgOTcgLTE2MyAxNTggLTMwIDI1IC02MCA1MSAtNjcgNTggLTggNyAtMTQgMTEgLTE0'; - $icon .= 'IDcgMAotNyAtNzMgNDcgLTc4IDU4IC0yIDQgLTEwIDcgLTE4IDcgLTggMCAtMzEgMTEgLTUyIDI1'; - $icon .= 'IC0yMCAxMyAtNzUgNDEgLTEyMiA2MAotNDcgMjAgLTk0IDQwIC0xMDUgNDUgLTExIDUgLTQ1IDE1'; - $icon .= 'IC03NSAyNCAtMTY4IDQ3IC0xODIgNDkgLTQwMCA1MiAtMTE4IDEKLTIyOCAwIC0yNDUgLTJ6IG0t'; - $icon .= 'MzkwIC01NDMgYzcwIC01NyAxMjIgLTk5IDIxNSAtMTc3IDI4OSAtMjQyIDY5MyAtNjMxIDgwOAot'; - $icon .= 'Nzc2IDE0OCAtMTg4IDE4NSAtMjcwIDE4NiAtNDAzIDAgLTc3IC00IC05OCAtMjggLTE0OSAtMzIg'; - $icon .= 'LTcwIC0xMTggLTE1OAotMTkyIC0xOTggLTk4IC01MyAtMjgzIC04MSAtMzc5IC01OCAtMzUgOCAt'; - $icon .= 'NDYgNCAxMTYgNDAgMTY1IDM2IDMxNCAxMzIgMzczCjIzOSAzNiA2NyAzOSAxNDYgOSAyMDYgLTg3'; - $icon .= 'IDE2OCAtNDkwIDM2OSAtMTE2MyA1NzggLTE4MiA1NyAtMjAwIDU4IC0xNDMgMTMKNTggLTQ0IDI3'; - $icon .= 'MyAtMjI0IDM4MyAtMzIwIDI0NiAtMjEzIDM5MiAtMzU4IDM3NiAtMzczIC03IC03IC0xMTkgNjYg'; - $icon .= 'LTIzMSAxNTEKLTg3IDY2IC0zNjcgMjg3IC0zNzUgMjk2IC0zIDMgLTU0IDQ2IC0xMTUgOTUgLTYw'; - $icon .= 'IDQ5IC0xMjEgOTkgLTEzNSAxMTEgLTI0IDIxCi0yOTAgMjQ0IC0yOTkgMjUxIC00OCAzNyA0NDcg'; - $icon .= 'LTkyIDc1OCAtMTk4IDYzIC0yMSAxMTYgLTM4IDExNyAtMzYgMSAxIC04NQoxNzUgLTE5MSAzODcg'; - $icon .= 'LTEwNyAyMTIgLTE5NCAzODkgLTE5NSAzOTMgMCAxMiAxNSAxIDEwNSAtNzJ6IG0xNTA3IC0xMTgx'; - $icon .= 'IGM4OAotMTc4IDE4NSAtMzg1IDE4MiAtMzg5IC0zIC00IC03OSAyNiAtMTgwIDcwIGwtNDIgMTgg'; - $icon .= 'LTkzIC00MCBjLTUyIC0yMiAtMTE0Ci00OSAtMTM4IC02MCAtMjQgLTExIC00NSAtMTggLTQ4IC0x'; - $icon .= 'NiAtNiA2IDI2MyAxODcgMjc3IDE4NyA2IDAgMjkgLTEwIDUwIC0yMgoyMSAtMTMgNDEgLTIwIDQ1'; - $icon .= 'IC0xNiA1IDQgLTEwNCAyNDQgLTEyMSAyNjYgLTEgMiAtNDEgLTExIC05MCAtMjggLTQ4IC0xNyAt'; - $icon .= 'OTIKLTI5IC05NyAtMjcgLTUgMSAxOSAyMCA1NCA0MiAzNSAyMSA4MiA1MiAxMDQgNjcgMjIgMTUg'; - $icon .= 'NDUgMjYgNTAgMjUgNiAtMiAyNwotMzYgNDcgLTc3eiIvPgo8cGF0aCBkPSJNMTAzMCAyMjI5IGMw'; - $icon .= 'IC0yIDYwIC0xMjMgMTM0IC0yNjkgODIgLTE2MSAxNDEgLTI2NyAxNTIgLTI3MiAxOTIKLTc2IDQ0'; - $icon .= 'NiAtMTk3IDUwNyAtMjQwIDE1IC0xMSAyNyAtMTcgMjcgLTE0IDAgMTUgLTE3MCAyMDcgLTI5MCAz'; - $icon .= 'MjYgLTE2NCAxNjMKLTUzMSA0ODggLTUzMCA0Njl6Ii8+CjwvZz4KPC9zdmc+Cg=='; + $icon = 'PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxz'; + $icon .= 'dmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxu'; + $icon .= 'czpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6'; + $icon .= 'Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0'; + $icon .= 'cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw'; + $icon .= 'L3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQv'; + $icon .= 'RFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2Fw'; + $icon .= 'ZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgd2lkdGg9IjEyOCIKICAgaGVpZ2h0PSIxMjgi'; + $icon .= 'CiAgIHZpZXdCb3g9IjAgMCAxMjggMTI4IgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmcxMSIK'; + $icon .= 'ICAgc29kaXBvZGk6ZG9jbmFtZT0iZG9ja2V0LWNhY2hlLWxvZ28tY3V0LnN2ZyIKICAgaW5rc2Nh'; + $icon .= 'cGU6dmVyc2lvbj0iMS4wLjEgKDNiYzJlODEzZjUsIDIwMjAtMDktMDcpIj4KICA8bWV0YWRhdGEK'; + $icon .= 'ICAgICBpZD0ibWV0YWRhdGExNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAg'; + $icon .= 'ICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9y'; + $icon .= 'bWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVy'; + $icon .= 'bC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0'; + $icon .= 'aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPHNv'; + $icon .= 'ZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xv'; + $icon .= 'cj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0i'; + $icon .= 'MTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAg'; + $icon .= 'IGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAg'; + $icon .= 'ICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWln'; + $icon .= 'aHQ9IjEwMDEiCiAgICAgaWQ9Im5hbWVkdmlldzEzIgogICAgIHNob3dncmlkPSJmYWxzZSIKICAg'; + $icon .= 'ICBpbmtzY2FwZTp6b29tPSI2LjQ4NDM3NSIKICAgICBpbmtzY2FwZTpjeD0iNDUuMzM5NzU5Igog'; + $icon .= 'ICAgIGlua3NjYXBlOmN5PSI1Ny44MzEzMjUiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9Ii05Igog'; + $icon .= 'ICAgIGlua3NjYXBlOndpbmRvdy15PSItOSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVk'; + $icon .= 'PSIxIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9ImRvY2tldC1jYWNoZS1sb2dvIiAvPgog'; + $icon .= 'IDxkZWZzCiAgICAgaWQ9ImRlZnM1Ij4KICAgIDxjbGlwUGF0aAogICAgICAgaWQ9ImNsaXAtZG9j'; + $icon .= 'a2V0LWNhY2hlLWxvZ28iPgogICAgICA8cmVjdAogICAgICAgICB3aWR0aD0iMTI4IgogICAgICAg'; + $icon .= 'ICBoZWlnaHQ9IjEyOCIKICAgICAgICAgaWQ9InJlY3QyIiAvPgogICAgPC9jbGlwUGF0aD4KICA8'; + $icon .= 'L2RlZnM+CiAgPGcKICAgICBpZD0iZG9ja2V0LWNhY2hlLWxvZ28iCiAgICAgY2xpcC1wYXRoPSJ1'; + $icon .= 'cmwoI2NsaXAtZG9ja2V0LWNhY2hlLWxvZ28pIj4KICAgIDxyZWN0CiAgICAgICBzdHlsZT0iZmls'; + $icon .= 'bDojMDAwMGZmO2ZpbGwtcnVsZTpldmVub2RkIgogICAgICAgaWQ9InJlY3Q5NCIKICAgICAgIHdp'; + $icon .= 'ZHRoPSIzNC42OTg3OTUiCiAgICAgICBoZWlnaHQ9IjI3LjYwNDgxOCIKICAgICAgIHg9Ii01NS4w'; + $icon .= 'NTU0MiIKICAgICAgIHk9Ii0yLjAwNDgxOTQiIC8+CiAgICA8cGF0aAogICAgICAgaWQ9IkVsbGlw'; + $icon .= 'c2VfMSIKICAgICAgIHN0eWxlPSJmaWxsOiNiYWJhYmEiCiAgICAgICBkPSJNIDYzLjcwMzEyNSwx'; + $icon .= 'LjcyMTM4NDVlLTQgQSA2NCw2NCAwIDAgMCAzLjM1MDYwMjVlLTcsNjQuMDAwMTcyIDY0LDY0IDAg'; + $icon .= 'MCAwIDY0LDEyOC4wMDAxOCA2NCw2NCAwIDAgMCAxMjgsNjQuMDAwMTcyIDY0LDY0IDAgMCAwIDY0'; + $icon .= 'LDEuNzIxMzg0NWUtNCBhIDY0LDY0IDAgMCAwIC0wLjI5Njg3NSwwIHogTSAzMy44NTc0MjIsMjAu'; + $icon .= 'MjczNjEgYyAwLDAgNTEuMTA0MzEyLDM5LjgyOTQ5OCA1NS4xOTUzMDIsNTYuMTg3NSBhIDE2LjQ3'; + $icon .= 'OCwxNi40NzggMCAwIDEgMC43NjU2Myw0LjI5ODgyOCBjIDAuNDI2LDUuMjg0IC0zLjQ1MDM3LDE1'; + $icon .= 'LjYzNTU5NSAtMTcuMzU5MzcsMTcuNjgzNTk1IC0yLjQ4MSwwLjUzOTAwNCAtOS4zODA4NTksMCAt'; + $icon .= 'OS4zODA4NTksMCAwLDAgOC41MTgxMDksLTEuMjg4ODMgMTEuNTM3MTA2LC0yLjc5ODgzIDMuMDE5'; + $icon .= 'MDAzLC0xLjUxIDEyLjE3NjE3MywtNS44ODc1OCAxMi4wNzYxNzMsLTE0LjAxNzU3OCAtMC4yMTUs'; + $icon .= 'LTMuMjM0IDAuMjE2MTEsLTkuOTIxMzc1IC0zMS44Mzc4ODgsLTIyLjIzNDM3NSAtMTEuMDY1LC00'; + $icon .= 'LjI1IC0yOC4zMjgxMjUsLTkuMTQ0NTMxIC0yOC4zMjgxMjUsLTkuMTQ0NTMxIDAsMCAzMy44NTg0'; + $icon .= 'MDYsMjcuMzg4ODEyIDM1LjY5MTQwNiwzMi4xMzI4MTIgLTkuMTY2LC00Ljc0IC00OS40OTIxODgs'; + $icon .= 'LTM5LjE0MDYyNSAtNDkuNDkyMTg4LC0zOS4xNDA2MjUgYSAzNDYuNywzNDYuNyAwIDAgMSAzOC4y'; + $icon .= 'NzM0MzgsMTEuMTExMzI4IHogbSA5LjE2MjEwOSwxMS4zMTgzNTkgMTIuMjEwOTM4LDI0LjMxODM1'; + $icon .= 'OSBjIDkuMTUzLDMuNDkyIDE4LjE1NTA5Miw3LjYwMTE3MiAyNS4xMjEwOTUsMTIuMjAxMTcyIC0z'; + $icon .= 'LjAzMywtNC4yMTkgLTEzLjE4NDAzMywtMTYuOTc1NTMxIC0zNy4zMzIwMzMsLTM2LjUxOTUzMSB6'; + $icon .= 'IG0gNTcuNjg3NDk5LDM4LjkyMTg3NSA5LjYwMTU2LDE5Ljk0OTIxOSAtOS41NDI5NywtMy45OTAy'; + $icon .= 'MzUgLTExLjY5OTIyNiw1LjA2NjQwNSAxMS42NDA2MzYsLTcuNzYzNjcgNS4zOTI1OCwyLjgwMDc4'; + $icon .= 'MSAtNi40MTQwNjYsLTEzLjA0Njg3NSAtOC40NjY4LDIuOTg0Mzc1IHoiIC8+CiAgPC9nPgo8L3N2'; + $icon .= 'Zz4K'; add_menu_page( 'Docket Cache', diff --git a/languages/docket-cache.pot b/languages/docket-cache.pot index c8d3aa5..38c165b 100644 --- a/languages/docket-cache.pot +++ b/languages/docket-cache.pot @@ -2,14 +2,14 @@ # This file is distributed under the same license as the Docket Cache plugin. msgid "" msgstr "" -"Project-Id-Version: Docket Cache 20.10.07\n" +"Project-Id-Version: Docket Cache 20.10.08\n" "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/docket-cache\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"POT-Creation-Date: 2020-11-25T21:50:53+00:00\n" +"POT-Creation-Date: 2020-11-27T17:29:18+00:00\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "X-Generator: WP-CLI 2.4.0\n" "X-Domain: docket-cache\n" @@ -72,12 +72,12 @@ msgid "Drop-In Wrapper not available." msgstr "" #: includes/admin/actcmd.php:45 -#: includes/src/Plugin.php:1323 +#: includes/src/Plugin.php:1328 msgid "Disable Object Cache" msgstr "" #: includes/admin/actcmd.php:47 -#: includes/src/Plugin.php:1319 +#: includes/src/Plugin.php:1324 msgid "Enable Object Cache" msgstr "" @@ -850,30 +850,30 @@ msgstr[0] "" msgstr[1] "" #. translators: %s: url -#: includes/src/Plugin.php:1146 +#: includes/src/Plugin.php:1151 msgid "Docket Cache: The object-cache.php Drop-In is outdated. Please click \"Re-Install\" to update it now.

Re-Install" msgstr "" #. translators: %s: url -#: includes/src/Plugin.php:1150 +#: includes/src/Plugin.php:1155 msgid "Docket Cache: An unknown object-cache.php Drop-In was found. Please click \"Install\" to use Docket Cache.

Install

" msgstr "" -#: includes/src/Plugin.php:1155 +#: includes/src/Plugin.php:1160 msgid "The object-cache.php Drop-In has been disabled at runtime." msgstr "" #. translators: %s: version -#: includes/src/Plugin.php:1281 -#: includes/src/Plugin.php:1295 +#: includes/src/Plugin.php:1286 +#: includes/src/Plugin.php:1300 msgid "Version %s" msgstr "" -#: includes/src/Plugin.php:1313 +#: includes/src/Plugin.php:1318 msgid "Settings" msgstr "" -#: includes/src/Plugin.php:1327 +#: includes/src/Plugin.php:1332 msgid "Install Drop-In" msgstr "" diff --git a/readme.txt b/readme.txt index 5301ed9..2b0d2a9 100644 --- a/readme.txt +++ b/readme.txt @@ -5,7 +5,7 @@ Donate link: https://www.patreon.com/bePatron?u=41796862 Requires at least: 5.4 Tested up to: 5.5 Requires PHP: 7.2.5 -Stable tag: 20.10.07 +Stable tag: 20.10.08 License: MIT License URI: ./license.txt @@ -57,9 +57,13 @@ To use Docket Cache requires minimum: To adjust the plugin behaviour, installation or manage through a command line, please refer to the [Documentation](https://docs.docketcache.com) for details. +== Development == +- [Report issues](https://github.com/nawawi/docket-cache/issues) +- [Changelog](https://raw.githubusercontent.com/nawawi/docket-cache/master/changelog.txt) + == Sponsor this project == -There is a lot of room for improvement and features to add, require plenty of person-hours dedicated for testing and development. +There is a lot of room for improvement and features to add, require plenty of person-hours dedicated to testing and development. [Become our sponsor](https://www.patreon.com/bePatron?u=41796862). All funds will be dedicated to maintenance, development, and marketing of this project. @@ -80,10 +84,6 @@ Affiliates with: - [Digitalocean](https://m.do.co/c/6c93db5b1ef6) - [KiahStore](https://docketcache.com/wp-content/spx/kiahstore/?utm_source=dcwporg) -== Development == -- [Report issues](https://github.com/nawawi/docket-cache/issues) -- [Changelog](https://raw.githubusercontent.com/nawawi/docket-cache/master/changelog.txt) - == Hosting Provider == The Docket Cache has been reported seemly works with these hosting provider: @@ -176,6 +176,11 @@ Yes, you can. It can boost more your WordPress performance since there is no net Kindly do manually remove wp-content/object-cache.php and wp-content/cache/docket-cache if an error occurs during updates. Thanks. == Changelog == += 20.10.08 = + +- Fixed WP_Object_Cache::dc_save() -> cache meta data type, change string to array if original data serialized. +- Fixed WP_Object_Cache::dc_save() -> wrong logic causes a random delay if array size more than 1MB. + = 20.10.07 = - Fixed Tweaks::misc() -> removed deprecated jetpack hook instagram_cache_oembed_api_response_body.