Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP脚本挂起在本地IP更改上_Php_Mysql - Fatal编程技术网

PHP脚本挂起在本地IP更改上

PHP脚本挂起在本地IP更改上,php,mysql,Php,Mysql,我有一个连接到远程MySQL主机的脚本来执行一些查询。 一段时间后,它会挂起一条消息“MySQL服务器已经离开”。 我有一个动态IP,每天至少更改3次,我意识到它在更改IP时挂起 因此,我修改了脚本以检测此错误,等待30-90秒并重新连接到服务器,但现在它挂起了重新连接的尝试 这在linux和windows上都会发生 这可能是什么原因 编辑:我认为这很明显,但是改变的IP是脚本运行的本地IP,MySQL服务器位于固定IP上。本地pc已连接到ADSL路由器,我想我的ISP正在强制重新连接(ip更改

我有一个连接到远程MySQL主机的脚本来执行一些查询。 一段时间后,它会挂起一条消息“MySQL服务器已经离开”。 我有一个动态IP,每天至少更改3次,我意识到它在更改IP时挂起

因此,我修改了脚本以检测此错误,等待30-90秒并重新连接到服务器,但现在它挂起了重新连接的尝试

这在linux和windows上都会发生

这可能是什么原因

编辑:我认为这很明显,但是改变的IP是脚本运行的本地IP,MySQL服务器位于固定IP上。本地pc已连接到ADSL路由器,我想我的ISP正在强制重新连接(ip更改)。
我知道在IP更改时,所有现有连接都会丢失,包括MySQL,但我说我正在IP更改时重新连接,它无法重新连接

您如何获得新的IP地址?如果您使用的是DNS(包括动态DNS),我猜您正在访问过时的DNS缓存。即使TTL的大多数动态DNS条目超过90秒(某些中间缓存服务器可能会设置最小TTL)。

此行为的一个原因可能是持久的数据库连接。若要澄清是否存在这种情况,请在IP地址已更改的情况下重新启动Apache或IIS Web服务器。如果重启后一切正常,你就可以得到它

存储在后台,如果数据库连接的主机名和用户凭据匹配,则会重新使用。mysql库的作用不同:用于持久连接和非持久连接


此外,您还可以检查php.ini中的mysql.allow\u persistent设置

你已经回答了你的问题。当您的IP发生更改时,所有现有连接都将丢失。TCP连接(例如到MySQL服务器的连接)将无法在IP更改中保持。欢迎使用StackOverflow!请给我们看一些代码,这样我们就可以看到哪里出了问题。@Brad请阅读整个问题,OP说他更改了脚本以检测此问题并重新连接。同样重要的是:哪个IP正在更改。。服务器还是客户端?我不确定DNS在这里有多重要,我正在使用远程服务器的IP(不是域名)进行连接,这是一个固定的问题IP@MarioLjubicic啊,对不起,我看到您对问题的编辑澄清了是客户端IP发生了变化。我将您最初的问题解释为服务器IP正在更改。不过,我将在这里留下我的回答,以方便通过搜索找到您的问题的任何人。启用了持久连接,但我不使用持久连接!