/
githubmirror
/
ydb-php-sdk
Обзор
Документация
Войти
/
githubmirror
/
ydb-php-sdk
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Sessions/MemorySessionPool.php
115 строк
2 KB
Илья
Update destructor in MemorySessionPool.php
12 июл 2023, 13:22
Не верифицирован
12 июл 2023, 13:22
bdbc5a6
Код
Авторство
О чём код?
<?php namespace YdbPlatform\Ydb\Sessions; use YdbPlatform\Ydb\Retry\Retry; use YdbPlatform\Ydb\Session; use YdbPlatform\Ydb\Contracts\SessionPoolContract; class MemorySessionPool implements SessionPoolContract { /** * @var array */ protected static $sessions = []; protected static $retry = null; public function __construct(Retry &$retry) { self::$retry = $retry; } /** * Destroy all current sessions. * @return void */ public function __destruct() { foreach (static::$sessions as $session_id => $session) { try { static::$retry->retry(function () use ($session) { $session->delete(); }, true); } catch (\Exception $e) { } } } /** * @return Session|null */ public function getIdleSession() { foreach (static::$sessions as $session_id => $session) { if ($session->isIdle()) { $this->syncSession($session_id); return $session; } } } /** * @param Session $session * @return void */ public function addSession(Session $session) { static::$sessions[$session->id()] = $session; } /** * @param string $session_id * @return void */ public function dropSession($session_id) { $session = static::$sessions[$session_id] ?? null; if ($session) { if ($session->isAlive()) { $session->delete(); } else { unset(static::$sessions[$session_id]); } } } /** * @param string $session_id * @return void */ public function syncSession($session_id) { $session = static::$sessions[$session_id] ?? null; if ($session && $session->id() !== $session_id) { unset(static::$sessions[$session_id]); static::$sessions[$session->id()] = $session; } } /** * @param Session $session * @return void */ public function sessionTaken(Session $session) { // do nothing } /** * @param Session $session * @return void */ public function sessionReleased(Session $session) { // do nothing } }