From 1dc8acd2633e68f6ad9fba8009ae888b25d021f4 Mon Sep 17 00:00:00 2001 From: Dmitry Khomutov Date: Wed, 7 Feb 2018 21:33:22 +0700 Subject: [PATCH] Replace cache to Symfony/Cache component. --- .gitignore | 2 + composer.json | 4 + composer.lock | 250 ++++++++++++++++++++++-- runtime/cache/.gitkeep | 0 src/B8Framework/Cache.php | 31 --- src/B8Framework/Cache/ApcCache.php | 149 -------------- src/B8Framework/Cache/RequestCache.php | 90 --------- src/B8Framework/Model.php | 3 +- src/B8Framework/Type/CacheInterface.php | 24 --- src/PHPCensor/Helper/Github.php | 12 +- src/PHPCensor/Model/BuildError.php | 4 +- src/PHPCensor/Model/BuildMeta.php | 4 +- src/PHPCensor/Model/Project.php | 8 +- tests/B8Framework/CacheTest.php | 38 ---- 14 files changed, 257 insertions(+), 362 deletions(-) create mode 100644 runtime/cache/.gitkeep delete mode 100644 src/B8Framework/Cache.php delete mode 100644 src/B8Framework/Cache/ApcCache.php delete mode 100644 src/B8Framework/Cache/RequestCache.php delete mode 100644 src/B8Framework/Type/CacheInterface.php delete mode 100755 tests/B8Framework/CacheTest.php diff --git a/.gitignore b/.gitignore index 57a654d7..4c882368 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ /vendor /composer.phar /runtime + /app/config.yml /public/assets/vendor + /public/artifacts !/public/artifacts/.gitkeep diff --git a/composer.json b/composer.json index 113147cb..71a9790e 100644 --- a/composer.json +++ b/composer.json @@ -56,6 +56,7 @@ "symfony/debug": "~3.4.0", "symfony/dependency-injection": "~3.4.0", "symfony/event-dispatcher": "~3.4.0", + "symfony/cache": "~3.4.0", "psr/log": "~1.0.0", "monolog/monolog": "~1.22.0", "pimple/pimple": "~3.0.0", @@ -94,6 +95,9 @@ "mremi/flowdock": "For FlowdockNotify plugin" }, "extra": { + "platform": { + "php": "5.6.*" + }, "installer-paths": { "public/assets/vendor/sprintf-js": ["npm-asset/sprintf-js"], "public/assets/vendor/codemirror": ["npm-asset/codemirror"], diff --git a/composer.lock b/composer.lock index 1048f470..ac6cba9d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "68c69d9aed8a6c9ef73856c6ddc9ab23", + "content-hash": "acf206f49431b95f0fadc3a765e6930a", "packages": [ { "name": "behat/gherkin", @@ -1602,16 +1602,16 @@ }, { "name": "phpunit/phpunit", - "version": "5.7.26", + "version": "5.7.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "7fbc25c13309de0c4c9bb48b7361f1eca34c7fbd" + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7fbc25c13309de0c4c9bb48b7361f1eca34c7fbd", - "reference": "7fbc25c13309de0c4c9bb48b7361f1eca34c7fbd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", "shasum": "" }, "require": { @@ -1635,7 +1635,7 @@ "sebastian/global-state": "^1.1", "sebastian/object-enumerator": "~2.0", "sebastian/resource-operations": "~1.0", - "sebastian/version": "~1.0.3|~2.0", + "sebastian/version": "^1.0.6|^2.0.1", "symfony/yaml": "~2.1|~3.0|~4.0" }, "conflict": { @@ -1680,7 +1680,7 @@ "testing", "xunit" ], - "time": "2017-12-17T06:14:38+00:00" + "time": "2018-02-01T05:50:59+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1787,6 +1787,52 @@ ], "time": "2015-09-11T15:10:35+00:00" }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, { "name": "psr/container", "version": "1.0.0", @@ -1933,6 +1979,54 @@ ], "time": "2016-10-10T12:19:37+00:00" }, + { + "name": "psr/simple-cache", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", + "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-01-02T13:31:39+00:00" + }, { "name": "robmorgan/phinx", "version": "v0.8.1", @@ -2880,6 +2974,76 @@ "homepage": "https://symfony.com", "time": "2018-01-03T07:37:34+00:00" }, + { + "name": "symfony/cache", + "version": "v3.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", + "reference": "8dee9ec2c9824c3f4039960d679a6689ee1cbdc1", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-apcu": "~1.1" + }, + "conflict": { + "symfony/var-dumper": "<3.3" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/dbal": "~2.4", + "predis/predis": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "time": "2018-01-18T22:16:57+00:00" + }, { "name": "symfony/config", "version": "v3.4.4", @@ -3409,17 +3573,73 @@ "time": "2018-01-03T07:37:34+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.6.0", + "name": "symfony/polyfill-apcu", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", - "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00", + "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Apcu\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-01-30T19:27:44+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.7.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", "shasum": "" }, "require": { @@ -3431,7 +3651,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -3465,7 +3685,7 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { "name": "symfony/process", diff --git a/runtime/cache/.gitkeep b/runtime/cache/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/src/B8Framework/Cache.php b/src/B8Framework/Cache.php deleted file mode 100644 index 0fc477cd..00000000 --- a/src/B8Framework/Cache.php +++ /dev/null @@ -1,31 +0,0 @@ -isEnabled()) { - return $default; - } - - $success = false; - $rtn = apc_fetch($key, $success); - if (!$success) { - $rtn = $default; - } - - return $rtn; - } - - /** - * Add an item to the cache: - * - * @param string $key - * @param mixed $value - * @param integer $ttl - * - * @return array|bool - */ - public function set($key, $value = null, $ttl = 0) - { - if (!$this->isEnabled()) { - return false; - } - - return apc_store($key, $value, $ttl); - } - - /** - * Remove an item from the cache: - * - * @param string $key - * - * @return bool|string[] - */ - public function delete($key) - { - if (!$this->isEnabled()) { - return false; - } - - return apc_delete($key); - } - - /** - * Check if an item is in the cache: - * - * @param string $key - * - * @return bool|string[] - */ - public function contains($key) - { - if (!$this->isEnabled()) { - return false; - } - - return apc_exists($key); - } - - /** - * Short-hand syntax for get() - * - * @see Config::get() - * - * @param string $key - * - * @return mixed - */ - public function __get($key) - { - return $this->get($key, null); - } - - /** - * Short-hand syntax for set() - * - * @see Config::set() - * - * @param string $key - * @param mixed $value - * - * @return array|bool - */ - public function __set($key, $value = null) - { - return $this->set($key, $value); - } - - /** - * Is set - * - * @param string $key - * - * @return bool|string[] - */ - public function __isset($key) - { - return $this->contains($key); - } - - /** - * Unset - * - * @param string $key - */ - public function __unset($key) - { - $this->delete($key); - } -} diff --git a/src/B8Framework/Cache/RequestCache.php b/src/B8Framework/Cache/RequestCache.php deleted file mode 100644 index 97b5a77c..00000000 --- a/src/B8Framework/Cache/RequestCache.php +++ /dev/null @@ -1,90 +0,0 @@ -contains($key) ? $this->data[$key] : $default; - } - - /** - * Add an item to the cache: - */ - public function set($key, $value = null, $ttl = 0) - { - $this->data[$key] = $value; - - return $this; - } - - /** - * Remove an item from the cache: - */ - public function delete($key) - { - if ($this->contains($key)) { - unset($this->data[$key]); - } - - return $this; - } - - /** - * Check if an item is in the cache: - */ - public function contains($key) - { - return array_key_exists($key, $this->data); - } - - /** - * Short-hand syntax for get() - * @see Config::get() - */ - public function __get($key) - { - return $this->get($key, null); - } - - /** - * Short-hand syntax for set() - * @see Config::set() - */ - public function __set($key, $value = null) - { - return $this->set($key, $value); - } - - /** - * Is set - */ - public function __isset($key) - { - return $this->contains($key); - } - - /** - * Unset - */ - public function __unset($key) - { - $this->delete($key); - } -} diff --git a/src/B8Framework/Model.php b/src/B8Framework/Model.php index 6b4c3d3d..a269c346 100644 --- a/src/B8Framework/Model.php +++ b/src/B8Framework/Model.php @@ -3,6 +3,7 @@ namespace b8; use b8\Exception\HttpException; +use Symfony\Component\Cache\Simple\ArrayCache; class Model { @@ -23,7 +24,7 @@ class Model $this->data = array_merge($this->data, $initialData); } - $this->cache = Cache::getCache(Cache::TYPE_REQUEST); + $this->cache = new ArrayCache(); } /** diff --git a/src/B8Framework/Type/CacheInterface.php b/src/B8Framework/Type/CacheInterface.php deleted file mode 100644 index 99097c78..00000000 --- a/src/B8Framework/Type/CacheInterface.php +++ /dev/null @@ -1,24 +0,0 @@ -get(('https://api.github.com' . $url), [ 'query' => $params, ]); - + $body = json_decode($response->getBody(), true); $headers = $response->getHeaders(); - + foreach ($body as $item) { $results[] = $item; } @@ -62,8 +62,8 @@ class Github return []; } - $cache = Cache::getCache(Cache::TYPE_APC); - $rtn = $cache->get('php-censor-github-repos'); + $cache = new FilesystemCache('', 0, RUNTIME_DIR . 'cache'); + $rtn = $cache->get('php-censor.github-repos'); if (!$rtn) { $client = new Client(); @@ -90,7 +90,7 @@ class Github } } - $cache->set('php-censor-github-repos', $rtn); + $cache->set('php-censor.github-repos', $rtn, 3600); } return $rtn; diff --git a/src/PHPCensor/Model/BuildError.php b/src/PHPCensor/Model/BuildError.php index bfb0bc20..5b7bbf1c 100644 --- a/src/PHPCensor/Model/BuildError.php +++ b/src/PHPCensor/Model/BuildError.php @@ -397,8 +397,8 @@ class BuildError extends Model return null; } - $cacheKey = 'Cache.Build.' . $key; - $rtn = $this->cache->get($cacheKey, null); + $cacheKey = 'php-censor.build-' . $key; + $rtn = $this->cache->get($cacheKey); if (empty($rtn)) { $rtn = Factory::getStore('Build', 'PHPCensor')->getById($key); diff --git a/src/PHPCensor/Model/BuildMeta.php b/src/PHPCensor/Model/BuildMeta.php index 0efa761c..1c2881a2 100644 --- a/src/PHPCensor/Model/BuildMeta.php +++ b/src/PHPCensor/Model/BuildMeta.php @@ -181,8 +181,8 @@ class BuildMeta extends Model return null; } - $cacheKey = 'Cache.Build.' . $key; - $rtn = $this->cache->get($cacheKey, null); + $cacheKey = 'php-censor.build-' . $key; + $rtn = $this->cache->get($cacheKey); if (empty($rtn)) { $rtn = Factory::getStore('Build', 'PHPCensor')->getById($key); diff --git a/src/PHPCensor/Model/Project.php b/src/PHPCensor/Model/Project.php index bf461b7a..c6ad79be 100644 --- a/src/PHPCensor/Model/Project.php +++ b/src/PHPCensor/Model/Project.php @@ -453,8 +453,8 @@ class Project extends Model return null; } - $cacheKey = 'Cache.ProjectGroup.' . $key; - $rtn = $this->cache->get($cacheKey, null); + $cacheKey = 'php-censor.project-group-' . $key; + $rtn = $this->cache->get($cacheKey); if (empty($rtn)) { $rtn = Factory::getStore('ProjectGroup', 'PHPCensor')->getById($key); @@ -741,8 +741,8 @@ class Project extends Model return null; } - $cacheKey = 'Cache.ProjectEnvironments.' . $key; - $rtn = $this->cache->get($cacheKey, null); + $cacheKey = 'php-censor.project-environments-' . $key; + $rtn = $this->cache->get($cacheKey); if (empty($rtn)) { $store = $this->getEnvironmentStore(); diff --git a/tests/B8Framework/CacheTest.php b/tests/B8Framework/CacheTest.php deleted file mode 100755 index 28fbe2f0..00000000 --- a/tests/B8Framework/CacheTest.php +++ /dev/null @@ -1,38 +0,0 @@ -set('DisableCaching', true); - - $cache = Cache::getCache(Cache::TYPE_APC); - $this->assertFalse($cache->isEnabled()); - $this->assertFalse($cache->set('anything', 10)); - $this->assertTrue(is_null($cache->get('anything'))); - - Config::getInstance()->set('DisableCaching', false); - } - - public function testCaching() - { - $cache = Cache::getCache(Cache::TYPE_APC); - - if ($cache->isEnabled()) { - $this->assertTrue($cache->set('anything', 10)); - $this->assertTrue($cache->get('anything') == 10); - $this->assertTrue(is_null($cache->get('invalid'))); - } - } -}