Приветствую. Есть бот, процесс-демон на php, который должен работать вечно. В нем в некоторых случаях мне нужна база данных. Заметил, что после того, как бот поработает какое-то время, возникают ошибки "MySQL server has gone away" и "error while sending QUERY packet". Как я понимаю, они возникают из-за тайм аута соединения с MySQL сервером.
Возник вопрос, когда лучше подключаться к БД? Максимальное время ожидания mysql сервера - 8 часов, следовательно сделать подключение один раз перед входом в вечный цикл - не подходит. Делать после каждой итерации вечного цикла переподключение? Или как лучше?
ну если долбиться каждые 10мс, то нет,конечно. Если цикл бесконечный, то в зависимости от того как долго он выполняется делайте переподключение каждые, допустим, 10000 итераций.
Смотря каким драйвером вы пользуетесь для подключения. Возможно есть функция ping (для mysqli точно есть), которой можно проверять соединение и переподключаться заново. А так же демоны на pcntl имеют свойство терять соединение во время форка потомков.