MySQL has gone в чате websocket

Был создан чат на websocket в Yii2, но после простоя чат вырубается. В логах видим «MySQL has gone».

Решение в оберке сообщение в эксепшен для проверки активности сервера и в случае когда он «has gone» перезапускать.

В MySQL желательно добавить директивы в файле /etc/mysql/my.cnf, в блоке mysqld: (значения указываются в секундах)

[mysqld]
wait_timeout = 28800
interactive_timeout = 28800

Код для переподключения с эксепшеном

try {
       // connect, send, receive messages
    } catch (\yii\db\Exception $e) {
        if (/* $e indicates DB connection is closed by timeout */) {
            $this->db->close();
            $this->db->open();
            return $this->executeInternal();
        }
        throw $e;
    }

 

Источники: https://ixnfo.com/izmenenie-wait_timeout-i-interactive_timeout-v-mysql.html

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.