mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-14 14:24:24 +00:00
59 lines
1.3 KiB
PHP
59 lines
1.3 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/*
|
|
* Chill is a software for social workers
|
|
*
|
|
* For the full copyright and license information, please view
|
|
* the LICENSE file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Chill\MainBundle\Redis;
|
|
|
|
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
|
|
|
|
final class RedisConnectionFactory implements EventSubscriberInterface
|
|
{
|
|
private readonly string $host;
|
|
|
|
private readonly int $port;
|
|
|
|
private readonly ChillRedis $redis;
|
|
|
|
private readonly int $timeout;
|
|
|
|
public function __construct($parameters)
|
|
{
|
|
$this->host = $parameters['host'];
|
|
$this->port = (int) $parameters['port'];
|
|
$this->timeout = (int) $parameters['timeout'];
|
|
$this->redis = new ChillRedis();
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$result = $this->redis->connect($this->host, $this->port, $this->timeout);
|
|
|
|
if (false === $result) {
|
|
throw new \RuntimeException('Could not connect to redis instance');
|
|
}
|
|
|
|
return $this->redis;
|
|
}
|
|
|
|
public static function getSubscribedEvents(): array
|
|
{
|
|
return [
|
|
'kernel.finish_request' => [
|
|
['onKernelFinishRequest'],
|
|
],
|
|
];
|
|
}
|
|
|
|
public function onKernelFinishRequest()
|
|
{
|
|
$this->redis->close();
|
|
}
|
|
}
|