我最近使用 Homebrew (Apache/PHP) 在本地主机环境中设置了运行 Ventura 的 Macbook Pro M1。除了远程 MySQL 数据库外,我网站上的所有内容都是本地的。我使用本地主机 (http://localhost) 作为我的 URL。
我知道数据库正在连接,因为当页面最终加载时,我正在从中获取数据。
该站点需要很长时间才能加载,并且几个 AJAX 调用最终超时并失败,导致本地主机几乎无用。
没有 Apache 错误。没有 PHP 错误。浏览器控制台中没有错误。
然而,我确实在浏览器控制台的“网络”选项卡中注意到本地主机在开始加载页面之前需要 60 秒。这对于为什么它这么慢以及为什么 AJAX 调用失败是有道理的(因为它们在初始化后也必须等待整整 60 秒)。请参阅随附的屏幕截图。
这可能是什么原因造成的?
在向浏览器提供页面内容之前,本地代码可能会查询 MySQL 数据库。此查询似乎正在等待 DNS 超时以查找您地址的 PTR。
要解决此 DNS 超时,请要求您的 MySQL 数据库主机禁用反向 DNS。
要禁用 DNS 主机名查找,请在启用 skip_name_resolve 系统变量的情况下启动服务器。在这种情况下,服务器仅使用 IP 地址而不使用主机名来将连接主机与 MySQL 授权表中的行相匹配。只能使用在这些表中使用 IP 地址指定的帐户。 (如果不存在指定客户端 IP 地址的帐户,则客户端可能无法连接。)