diff options
author | Marc Alexander <admin@m-a-styles.de> | 2018-09-16 16:10:25 +0200 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2018-09-16 16:10:25 +0200 |
commit | f08d18c99c1f01497877535a0c55d6289275e339 (patch) | |
tree | f9d51a0edb88371eb811ed5dae12e8bab64a6b85 | |
parent | 3e851907988b5b8e542f0a838cebfa8185b55ac4 (diff) | |
parent | 5edb33036654fad4df63507f00934b0d078e2756 (diff) | |
download | forums-f08d18c99c1f01497877535a0c55d6289275e339.tar forums-f08d18c99c1f01497877535a0c55d6289275e339.tar.gz forums-f08d18c99c1f01497877535a0c55d6289275e339.tar.bz2 forums-f08d18c99c1f01497877535a0c55d6289275e339.tar.xz forums-f08d18c99c1f01497877535a0c55d6289275e339.zip |
Merge pull request #5295 from v12mike/ticket/15726
Ticket/15726 Implement selective purge in APCu cache driver
-rw-r--r-- | phpBB/phpbb/cache/driver/apcu.php | 6 | ||||
-rw-r--r-- | tests/cache/apcu_driver_test.php | 17 |
2 files changed, 22 insertions, 1 deletions
diff --git a/phpBB/phpbb/cache/driver/apcu.php b/phpBB/phpbb/cache/driver/apcu.php index 40192e4026..c96cf0de57 100644 --- a/phpBB/phpbb/cache/driver/apcu.php +++ b/phpBB/phpbb/cache/driver/apcu.php @@ -25,7 +25,11 @@ class apcu extends \phpbb\cache\driver\memory */ function purge() { - apcu_clear_cache(); + /* + * Use an iterator to selectively delete our cache entries without disturbing + * any other cache users (e.g. other phpBB boards hosted on this server) + */ + apcu_delete(new \APCUIterator('#^' . $this->key_prefix . '#')); parent::purge(); } diff --git a/tests/cache/apcu_driver_test.php b/tests/cache/apcu_driver_test.php index 9de1d82a15..57f640c313 100644 --- a/tests/cache/apcu_driver_test.php +++ b/tests/cache/apcu_driver_test.php @@ -49,10 +49,27 @@ class phpbb_cache_apcu_driver_test extends phpbb_cache_common_test_case protected function setUp() { + global $phpbb_container, $phpbb_root_path; + parent::setUp(); + $phpbb_container = new phpbb_mock_container_builder(); + $phpbb_container->setParameter('core.cache_dir', $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/'); + $this->driver = new \phpbb\cache\driver\apcu; $this->driver->purge(); } + + public function test_purge() + { + /* add a cache entry which does not match our key */ + $foreign_key = 'test_' . $this->driver->key_prefix . 'test'; + $this->assertSame(true, apcu_store($foreign_key, 0, 600)); + $this->assertSame(true, apcu_exists($foreign_key)); + + parent::test_purge(); + + $this->assertSame(true, apcu_exists($foreign_key)); + } } |