class Decorator implements ApiInterface
{
/**
* @var Api
*/
private $next;
/**
* @var \Doctrine\Common\Cache\Cache
*/
private $cache;
/**
* @var int
*/
private $lifetime;
public function __construct(Api $next, \Doctrine\Common\Cache\Cache $cache, $lifetime)
{
$this->next = $next;
$this->cache = $cache;
$this->lifetime = $lifetime;
}
private function request(Request $request)
{
$key = $this->getRequestFingerprint($request);
if ($response = $this->cache->fetch($key)) {
return $response;
}
$response = $this->next->request($request);
$this->cache->save($key, $response, $this->lifetime);
return $response;
}
}
/**
* @var string[]
*
* @ORM\Column(type="json_array")
*/
private $quotes;
Один и тот же скрипт использует несколько клиентов, какая именно база данных используется - определяется через субдомен. Список субдоменов и их баз данных хранится в служебной базе данных.