首先,我已经经历过一些相关的职位,但没有运气。
我遵循了MySQL server has gone away - in exactly 60 seconds中提供的解决方案,在开始时设置了这个值:
ini_set('mysql.connect_timeout', 300);
ini_set('default_socket_timeout', 300);但这一错误似乎依然存在。
该错误发生在执行查询之前:用于处理mysql操作的数据库类,执行ping (mysqli_ping)以刷新连接(猜这就是使用mysql ping的意思),但在某些地方,~60它抛出此警告:
警告: mysqli_ping():MySQL服务器在.
我错过了什么吗?
最新消息我弄清楚了问题到底在哪里。
我会进一步解释我的工作流程。我建立了两个不同的DB连接,第一个用于检索数据,第二个用于插入所获得的所有数据(逐行)。由于第二个连接是正在执行操作的连接,我认为这是一个产生服务器的连接已经消失了,但是事实证明这个错误是由空闲连接(第一个)引起的。
我所做的解决办法是在查询数据之后关闭连接(第一个连接将不再使用)。
第二个连接有足够的时间不达到超时。
第一个连接到远程数据库,第二个连接到本地服务器,因此我完全控制了第二个数据库。
连接到远程MySQL服务器的奇怪之处是,当我从我的PHP脚本连接到60秒左右之后,它就达到了超时,但是如果我从控制台连接它,连接就不是超时了。你知道我怎么才能避免那个超时(服务器已经消失了)?正如我前面所说的,我已经有了解决这个问题的方法,但是我想知道为什么PHP在大约60秒后就会超时,而在控制台上我可以保持每小时的连接。
发布于 2016-08-10 01:21:13
这些信息表明,您正在设置更改客户端连接,此问题与服务器有关:关闭连接的是服务器。若要更改此配置,必须更改wait_timeout在my.cnf上的值
资料来源:http://dev.mysql.com/doc/refman/5.7/en/gone-away.html timeout
还有一件事:改变这可能不是你能做的最好的事情。首先尝试改进您的查询。
https://stackoverflow.com/questions/38862691
复制相似问题