Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Отваливается сервер (mysql++) (Якорь) 13/04/2009 - 09:35:21
      Re: Отваливается сервер (mysql++) (Якорь) 13/04/2009 - 18:16:42



From: Якорь - 13/04/2009 - 09:35:21
Subject:Отваливается сервер (mysql++)
-----------------
Помогите, кто чем может... :)
Вот такая ситуация, работает сервер, когда к серверу обращается клиент, я проверяю нижеследующим образом зарегестрирован ли он в базе. Все работает замечательно 24х7 но наступают выходные и к серверу никто не обращается. В понедельник эта ф-я начинает сообщать, что "unknown client id", то есть мол к серверу зацепился, а записей 0. Перезапуск моего кода - лечит ситуацию. Проверено не раз. Такое впечатление, что connection впал в прострацию - говорит, что соединен, и возвращает пустые ответы. Никто в похожие ситуации не попадал - куда смотреть?

#include <mysql++.h>
#include <boost/date_time/posix_time/posix_time.hpp>
#include "server_config.hpp"
#include "sql.hpp"
sql* sql::instance() {
static sql* retval;
lock lk(sql_mutex);
if(!retval) retval = new sql;
return retval;
}
bool sql::check_if_enabled(long long int id) {
lock lk(sql_mutex);
bool result = false;
try {
if(!conn_.connected()) connect();
mysqlpp::Query query = conn_.query();
query << "select enabled from customer where id = " << id;
mysqlpp::StoreQueryResult ares = query.store();
if(ares.num_rows() > 1) {
std::cerr << "strange client id - more than 1: " << id << std::endl;
result = false;
}
if(ares.num_rows() == 0) {
std::cerr << "unknown client id" << id << std::endl;
result = false;
}
if(ares.num_rows() == 1) {
result = boost::lexical_cast<bool>(ares[0]["enabled"]);
}
}
catch(const mysqlpp::Exception& er) {
std::cerr << "error: " << er.what() << std::endl;
result = true;
}
catch(std::exception& e) {
result = true;
std::cerr << "error: " << e.what() << std::endl;
}
return result;
}
sql::sql():
conn_(false) {
connect();
}
boost::mutex sql::sql_mutex;
void sql::connect() {
if(!conn_.connect(configuration::instance()->database().c_str(),
"127.0.0.1",
configuration::instance()->user_name().c_str(),
configuration::instance()->password().c_str())) {
std::cerr << "Failed to connect to mysql server\n";
}
}



[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
35370



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |