我最近使用Homebrew(Apache/PHP)在本地主机环境中设置了我的Macbook Pro M1运行Ventura。我的网站上的所有内容都是本地的,除了一个远程MySQL数据库。我使用本地主机(http://localhost)作为我的URL。
我知道数据库正在连接,因为当页面最终加载时,我正在从中获取数据。
加载站点需要很长时间,并且有几个 AJAX 调用最终超时并失败,使得localhost几乎毫无用处。
没有Apache错误,没有PHP错误,浏览器控制台没有错误。
不过我注意到在浏览器控制台的网络标签中,localhost需要60秒才能开始加载页面。这就解释了为什么它这么慢,以及为什么 AJAX 调用失败(因为这些调用在初始化后也必须等待整整60秒)。请参见随附的屏幕截图。
是什么原因导致的?
1条答案
按热度按时间rvpgvaaj1#
很可能本地代码在向浏览器提供页面内容之前对MySQL数据库进行了查询。此查询似乎在等待DNS超时以查找您地址的PTR。
反向DNS查询可以在多个位置生成。
本地
%h
(如果有,请替换为%a)或已启用HostnameLookups
(禁用它)。[gethostbyaddr][1]
。很少
skip_name_resolve
,它强制服务器解析客户端的DNS名称,要求您将MySQL数据库主机设置为disable reverse DNS。要禁用DNS主机名查找,请在启用skip_name_resolve系统变量的情况下启动服务器。在这种情况下,服务器仅使用IP地址而不使用主机名来将连接主机与MySQL授权表中的行进行匹配。只能使用在这些表中使用IP地址指定的帐户。(如果不存在指定客户机IP地址的帐户,则客户机可能无法连接。)
例如,将添加到www.example.com的DNSexample.com:
添加到113.0.203.in-addr.arpa:
页面加载的基本工作流:
gethostbyaddr
,则该语言要求解析器查找名称并返回它。在进行查找的任何这些示例中,名称服务器执行以下步骤: