我有一个连接到远程MySQL主机以执行一些查询的脚本。过了一段时间后,它挂起了,并显示一条消息'MySQL服务器已消失‘。我有一个动态IP,每天至少更改3次,我意识到它在IP更改时挂起。
因此,我修改了脚本以检测此错误,等待30 - 90秒并重新连接到服务器,但现在它在重新连接尝试时挂起。
这在linux和windows上都会发生。
这可能是什么原因呢?
编辑:我认为这是显而易见的,但变化的ip是运行脚本的本地IP,MySQL服务器在固定的IP上。本地pc连接到ADSL路由器,我猜是我的ISP强制重新连接(ip更改)。我知道在IP更改时,所有现有的连接都会丢失,包括。MySQL,但我说我正在IP更改时重新连接,但它无法重新连接!
发布于 2012-05-12 02:14:34
您如何获取新的IP地址?如果您正在使用DNS (包括动态DNS),我的猜测是您正在访问一个陈旧的DNS缓存。即使大多数动态DNS条目的TTL长于90秒(而且一些中间缓存服务器可能无论如何都会设置最小TTL )。
发布于 2012-05-13 00:10:35
这种行为的一个原因可能是持久的数据库连接。要弄清楚是不是这样,请重新启动Apache或IIS Web服务器,以防IP地址发生更改。如果在重启后一切正常,那么你就成功了。
Persistent database connections存储在后台,如果数据库连接的主机名和用户凭据匹配,则会重用。mysql库起到了很大的作用:mysql_pconnect用于持久连接,mysql_connect用于非持久连接。
此外,您还可以检查php.ini中的mysql.allow_persistent.设置
https://stackoverflow.com/questions/10556442
复制相似问题