1, the remote connection differs from the local connection. Local connection because not affected by such factors as speed, processing speed is relatively fast, so the general operation of the database is the form of a short connection, that is, connection-operation-shutdown. However, the remote connection has been tested to find that it takes a long time to connect to the database on the remote server, but the actual operation of the database is not much affected. Therefore, the way of remote operation in a long connection form, that is, connection-operation ... -operation-Close, detailed, is the beginning of the connection, the middle of a number of operations, only close the software when the database is closed.
2, since remote with long connection form, some people will say the middle connection is broken what to do? One solution, MySQL's C API provides a function mysql_ping (&msyqlconnect), you can put this function in the program in the appropriate location, periodically check the database connection is broken, if disconnected, this function will automatically connect. But with this function there is a premise: after using Mysql_real_connect to connect to the database, then use Mysql_options (&mysql, Mysql_opt_reconnect, ...) to automatically reconnect. This way, when the MySQL connection is lost, you can use mysql_ping to automatically reconnect the database. If it is before MySQL 5.1.6, then the Mysql_options (&mysql, Mysql_opt_reconnect, ...) should be executed after each execution of Real_connect, if it is MySQL 5.1.6+, It's enough to do it once before connect.
My specific implementation code is:
Database connection
int Databaseoperator::connect (CString address,cstring username,cstring password,cstring port,cstring database)
{
if (Mysql_real_connect (&mysqlconnect,address,username,password,database,atoi (port), NULL,0))
{
char value = 1;
Mysql_options (&mysqlconnect, Mysql_opt_reconnect, &value);
return 1;
}
Else
{
return 0;
}
}
You can start a different timer:
Add the following sentence:
Mysql_ping (&oper.mysqlconnect);
3, that is, a long connection, at that time we hope that the longer the connection, the better. In addition to using mysql_ping (), we'd better set the MySQL database connection timeout length.
The following text was excerpted from http://blog.chinaunix.net/uid-26758020-id-3307042.html
In MySQL default settings, if a database connection is not used for more than 8 hours (idle for 8 hours, i.e.
28800s), MySQLThe server will actively disconnect the connection, and subsequent query operations on that connection will fail,appears: Error 2006(MySQL server has gone away)!. To view the MySQL server time-out:Msyql> show global variables like '%timeout% '; Set MySQL server time-out (in seconds): msyql> set global wait_timeout=10;msyql> set global interactive_timeout=10;
About MySQL Remote connection summary