Столкнулся как-то давненько с темой реконнекта к БД (SQL).
У меня есть воркер на yii2, который работает через commands, работает с БД он через персистентное соединение.
Через каждые 8 часов надо переподключаться к БД.
Так как запрос был всего один, я обернул в try catch запрос к БД, и если падает Exception, то надо переподключиться к БД.
Код: Выделить всё
Yii::$app->db->close();
Yii::$app->db->open();
Переопределить
Код: Выделить всё
yii2/vendor/yiisoft/yii2/db/Connection.php
protected function createPdoInstance()
https://github.com/yiisoft/yii2/blob/ma ... n.php#L521
Код: Выделить всё
if ($this->pdo !== null) {
return;
}
Единственное решение которое я сейчас вижу, это переопределение
Код: Выделить всё
yii2/vendor/yiisoft/yii2/db/Command.php
protected function queryInternal($method, $fetchMode = null)
Может у кого-то есть более цивилизованные способы?