diff --git a/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php b/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php index 3b8f7e8ade0b..621899d904ef 100644 --- a/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/ApcuAdapter.php @@ -50,7 +50,9 @@ protected function doHave($id) */ protected function doClear($namespace) { - return apcu_clear_cache(); + return isset($namespace[0]) && class_exists('APCuIterator', false) + ? apcu_delete(new \APCuIterator(sprintf('/^%s/', preg_quote($namespace, '/')), APC_ITER_KEY)) + : apcu_clear_cache(); } /** diff --git a/src/Symfony/Component/Cache/Adapter/DoctrineAdapter.php b/src/Symfony/Component/Cache/Adapter/DoctrineAdapter.php index f89148a7871f..26dd8e3a86d8 100644 --- a/src/Symfony/Component/Cache/Adapter/DoctrineAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/DoctrineAdapter.php @@ -22,8 +22,9 @@ class DoctrineAdapter extends AbstractAdapter public function __construct(CacheProvider $provider, $defaultLifetime = 0, $namespace = '') { - parent::__construct($namespace, $defaultLifetime); + parent::__construct('', $defaultLifetime); $this->provider = $provider; + $provider->setNamespace($namespace); } /** @@ -47,7 +48,11 @@ protected function doHave($id) */ protected function doClear($namespace) { - return $this->provider->flushAll(); + $namespace = $this->provider->getNamespace(); + + return isset($namespace[0]) + ? $this->provider->deleteAll() + : $this->provider->flushAll(); } /**