您好,欢迎来到码863代码分享网! 请[登录] / [注册]

mysqli连接失效的解决方法 使用ping函数或者设置timeout

编辑

长时间不用的连接php与mysql服务器都会中断,ping重连php中断的,close加new重连接mysql服务器中断的   ping不能重连mysql服务中断的服务


当建立一个mysqli连接,在time_out(默认值在配置文件中设定)时间后没有对该连接做任何操作,这个连接会无效,此后再想使用这个连接进行查询,则回出现call xxxx on a non-object错误。这个时候如果不close这个已经失效的连接,直接进行new mysqli进行重新连接,则同样会连接失败,系统默认返回的还是那个已经失效的连接,必须close然后再重新连接。

解决这个问题方法有三个:


一强行把连接等待时间设为很大:

$link= new mysqli($host,$user,$passwd,$database,$port);

$link->query("SET wait_timeout = 3600;");

$link->query("SET interactive_timeout = 3600;");


二在每一次query查询前使用ping函数,关闭已经无效的连接,重新连接.

$link= new mysqli($host,$user,$passwd,$database,$port);

......(执行代码时间超过timeout时间)

if(!$link->ping())

{

echo "in ping reconnect\n";

@$this->db->close();

$link = new mysqli($host,$user,$passwd,$database,$port);

}

$link->query(xxx);


三 使用类封装连接mysql过程,每一次查询前重新new这个封装好的类,就会又得到一个新的连接,即使

你的连接时指向同一个库,同一个表。


CopyRight 2002~2023 精通2100网 联系邮箱:qqtxt@163.com
版权所有:精通2100网 湘ICP备2023018646号-1
MYSQl共执行 3 个查询,用时 0.0019409656524658 秒,PHP脚本用时 0.004101 秒,占用内存 0.498 MB,Gzip 已启用