purge both http and https from http cache store

This commit is contained in:
David Buchmann 2017-02-10 17:11:43 +01:00 committed by Fabien Potencier
parent 64b2e56021
commit 15da53ca9f

View File

@ -314,6 +314,23 @@ class Store implements StoreInterface
return unserialize($entries); return unserialize($entries);
} }
/**
* Purges data for the given URL.
*
* This method purges both the HTTP and the HTTPS version of the cache entry.
*
* @param string $url A URL
*
* @return bool true if the URL exists with either HTTP or HTTPS scheme and has been purged, false otherwise
*/
public function purge($url)
{
$http = preg_replace('#^https#', 'http', $url);
$https = preg_replace('#^http#', 'https', $url);
return $this->doPurge($http) || $this->doPurge($https);
}
/** /**
* Purges data for the given URL. * Purges data for the given URL.
* *
@ -321,10 +338,9 @@ class Store implements StoreInterface
* *
* @return bool true if the URL exists and has been purged, false otherwise * @return bool true if the URL exists and has been purged, false otherwise
*/ */
public function purge($url) private function doPurge($url)
{ {
$key = $this->getCacheKey(Request::create($url)); $key = $this->getCacheKey(Request::create($url));
if (isset($this->locks[$key])) { if (isset($this->locks[$key])) {
flock($this->locks[$key], LOCK_UN); flock($this->locks[$key], LOCK_UN);
fclose($this->locks[$key]); fclose($this->locks[$key]);