1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-12 20:02:08 +02:00

Merge pull request #5295 from v12mike/ticket/15726

Ticket/15726 Implement selective purge in APCu cache driver
This commit is contained in:
Marc Alexander 2018-09-16 16:10:25 +02:00
commit f08d18c99c
No known key found for this signature in database
GPG Key ID: 50E0D2423696F995
2 changed files with 22 additions and 1 deletions

View File

@ -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();
}

View File

@ -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));
}
}