PHP到EasyPHP MySQL服务器1秒连接延迟
我在这里问这个问题,因为我认为它不仅仅适用于Easy
PHP本身.
我目前使用EasyPHP作为我的WAMP开发服务器,所以我可以创建Web应用程序.问题是,当我得到mysqli对象连接到数据库需要1秒.在共享托管结果上运行相同的查询速度超过200倍.这应该是我应该担心的事吗?在可扩展性或将应用程序移动到另一个服务器方面,花一点时间看看问题是否明智?我只是假设EasyPHP很慢.不是专业,只是让我感兴趣的东西.
如果您在Windows 7之前遇到此问题并使用Windows版本,这可能不是您的问题的答案.
为什么会发生这种情况? 这个问题的原因是IPv4与IPv6. 当您使用主机名而不是IP地址时,MySQL客户端首先为该名称运行AAAA(IPv6)主机查找,如果成功将名称解析为IPv6地址,则首先尝试此地址.如果任一步骤失败(名称解析或连接),它将回退到IPv4,运行A查找并尝试此主机. 这在实践中意味着如果IPv6本地主机查找成功,但是MySQL并未绑定到IPv6环回,则在发生IPv4回退之前,您将需要等待一个连接超时周期(显然在OP的计算机上为1秒)并且连接成功. 这不是Windows 7之前的一个问题,因为本地主机解析是通过hosts文件完成的,而且它预先配置了127.0.0.1 – 它没有附带它的IPv6对应的:: 1. 然而,由于Windows 7,因为本地主机解析器内置在DNS解析器中,原因如下:here.这意味着IPv6查找现在可以成功,但是MySQL并不绑定到该IPv6地址,因此连接将失败,您将看到这个问题概述的延迟. 这很好.告诉我如何解决它已经! 你有几个选择.围绕互联网,一般的“解决方案”似乎是明确使用IP地址而不是名称,但是有两个原因不能这样做,这两个可移植性相关,都可以说是不重要的: >如果将脚本移动到仅支持IPv6的另一台机器,则脚本将不再起作用. 他们听起来很重要吗? 他们不是您应该设计应用程序,以便在配置文件中定义此类事物.如果您将脚本移动到另一个环境,其他事情也需要配置. 总而言之,使用IP地址不是最好的解决方案,但最有可能是一个可以接受的解决方案. 那么最好的解决方案是什么? 最好的方法是更改??MySQL服务器使用的绑定地址.但是,这并不像人们想要的那么简单.与Apache,Nginx和几乎所有其他理想的网络服务应用程序不同,MySQL只支持单个绑定地址,因此不仅仅是添加另一个绑定地址.幸运的是,操作系统确实支持这里的一些魔法,所以我们可以使MySQL同时使用IPv4和IPv6. 您需要运行MySQL 5.5.3或更高版本,您需要使用–bind-address =命令行参数启动MySQL(或在my.ini中设置相应的选项).你有4个选项docs,具体取决于你想做什么: >你可能熟悉的那个,你最有可能(有效地)使用0.0.0.0.这将绑定到机器上的所有可用的IPv4地址.这实际上可能不是最好的事情,即使你不关心IPv6,因为它具有与::相同的安全隐患. 我需要修改hosts文件吗? 没有.不要修改hosts文件. DNS解析器知道如何处理本地主机,重新定义它最多没有任何效果,最坏的时候会混淆解决方案.
这也可能解决了解决问题所需的问题,相关但略有不同的原因. 没有此配置选项,MySQL将尝试通过PTR DNS查询将所有客户端连接IP地址解析为主机名.如果您的MySQL服务器已启用IPv6,但连接仍然需要很长时间,可能是由于反向DNS(PTR)记录配置不正确. 禁用名称解析将解决此问题,但它确实有其他后果,特别是配置为在主机条件下使用DNS名称的任何访问权限现在都将失败. 如果要执行此操作,您将需要配置所有授权以使用IP地址而不是名称. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |