2

我最近在这种情况下没有改变任何东西,但最近我到远程服务器的 mysqli_connect() 非常慢(大约是它达到 30 秒最大执行时间的一半时间)。当它工作时,响应时间在 28 到 30 秒之间。

我已经在两台服务器上重新启动了 MySQL。保存 PHP 脚本的服务器是本地 WAMP 服务器,远程服务器是 LAMP 堆栈。LAMP 服务器可以很好地提供与 WAMP 服务器请求的信息相同的信息。查询似乎不是问题,而是看起来 mysqli_connect() 是问题:

    $mtime = microtime(); 
    $mtime = explode(" ",$mtime); 
    $starttime = $mtime[1] + $mtime[0]; 
        $this->conn = mysqli_connect($this->host,$this->user,$this->password) or die(mysqli_error($this->conn));
        $etime = microtime(); 
    $etime = explode(" ",$etime); 
    $endtime = $etime[1] + $etime[0]; 
    $totaltime = ($endtime - $starttime);  
    echo('<!--mysqli_connect took: '.$totaltime.' seconds-->');

该页面(当它没有为达到 max_execution_time 给出 500 响应时)将显示:

<!--mysqli_connect took: 28.975151777267 seconds-->

远程 LAMP 服务器上的相同代码将显示:

<!--mysqli_connect took: 0.036190032958984 seconds-->

自从这工作以来,我没有更新此代码或进行任何配置更改。除了在 WAMP 服务器上超过 30 秒时超出 max_execution_time 错误之外,我在任何一台服务器上都没有收到任何错误。有没有人有什么建议?

谢谢阅读。

4

2 回答 2

4

也许是DNS问题?您是否尝试过将主机字符串更改为直接 IP 地址而不是域?这里有一个类似的问题,Connecting to mysql server(localhost) very slow,听起来很相似,但是它是本地主机并更改为 127.0.0.1 解决了这个问题。

于 2014-01-14T18:09:00.040 回答
0

发现问题,它与 DNS 相关。我仍然不完全理解它。LAMP 服务器上的守护程序似乎named已停止。此服务器是我用来连接的域名的权威 NS。我不知道为什么它有时会工作,或者为什么在我使用 IP 地址时它不起作用,但是现在我再次启动该服务时它工作正常。

感谢您的所有帮助。

于 2014-01-14T23:12:26.933 回答