mysql_real_connect

mysql 的sleep线程过多处理方法

房东的猫 提交于 2020-03-24 08:35:20
什么是长连接? 其实长连接是相对于通常的短连接而说的,也就是长时间保持客户端与服务端的连接状态。 通常的短连接操作步骤是: 连接-》数据传输-》关闭连接 ; 而长连接通常就是: 连接-》数据传输-》保持连接-》数据传输-》保持连接-》…………-》关闭连接 ; 这就要求长连接在没有数据通信时,定时发送数据包,以维持连接状态,短连接在没有数据传输时直接关闭就行了 什么时候用长连接,短连接? 长连接主要用于在 少数 客户端与服务端的 频繁 通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费。 但是对于服务端来说,长连接也会耗费一定的资源,需要专门的线程(unix下可以用进程管理)来负责维护连接状态。 总之,长连接和短连接的选择要视情况而定。 首先,如果使用了长连接而长期没有对数据库进行任何操作,那么在timeout值后,mysql server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。 在使用mysql_real_connect连接数据库之后,再使用mysql_options( &mysql, MYSQL_OPT_RECONNECT, … ) 来设置为自动重连。这样当mysql连接丢失的时候,使用mysql_ping能够自动重连数据库

mysql_real_connect()

梦想与她 提交于 2019-12-28 03:12:56
函数原型 :MYSQL mysqlrealconnect( MYSQL mysql, const char host, const char user, const char passwd, const char db, unsigned int port, const char unixsocket, unsigned intclientflag) 说明: mysql_real_connect()试图建立到运行host的一个MySQL数据库引擎的一个连接。mysql_real_connect()在你可以执行任何其他API函数之前必须成功地完成,除了mysql_get_client_info() 参数: 第一个参数应该是一个现存MYSQL结构的地址。在调用mysql_real_connect()之前,你必须调用mysql_init()初始化MYSQL结构。见下面的例子。 1.Host :值可以是一个主机名或一个IP地址。如果host是NULL或字符串"localhost",假定是 到本地主机的一个连接。如果OS支持套接字(Unix)或命名管道(Win32),使用他们而不是TCP/IP与服务器连接。 2. User :参数包含用户的MySQL登录ID。如果user是NULL,假定是当前用户。在Unix下, 它是当前登录名。在Windows ODBC下,必须明确地指定当前用户名字。 3