普通注册 - 普通登录
开源之家-免费素材_软件_模板_源码下载-更快的站长下载站

开源之家-免费素材_软件_模板_源码下载-更快的站长下载站

两行命令解决Windows的localhost解析为::1导致数据库、PHP+Mysql等请求缓慢问题

时间:2020-08-10 18:50 [[其它教程]] 作者:转载 浏览:

问题描述
PHP 写的后端程序,一旦涉及数据库操作,响应就会变得异常得慢(这里的异常是指:同样的程序在 Linux 下执行,速度没有问题),常常需要等待数十秒,但每次的返回结果中,实际用于执行 SQL 查询的时间均短至毫秒量级。
PHP 版本:7.2.25、7.2.13、7.1.33、5.3.3,无论老版本还是目前 7.2 最新的子版本都有一样的问题,看来官方似乎并不想处理。
问题排查
进行查询操作请求通过PHP 在 WindowsWindows 下运行时,遇到 localhost 会尝试先将其解析成 IPv6 地址,当无法解析或者无法用 IPv6 连接数据库时会等待超时,再尝试解析成 IPv4 地址,因此一旦遇到此类操作时就会出现很长的等待时间。
而通常情况下,大部分windows服务器、本地调试环境都是没有IPV6网络支持的,该问题的显著特征是:
      在配置数据库连接信息时,使用127.0.0.1作为数据库连接地址响应比localhost快很多倍,毫秒计量。


流传的解决方法主要有:
      1.修改 Windows 的 hosts 文件,加上一行 127.0.0.1 localhost,随后需要 flushdns 一下。
                  —— 这样似乎能够显式指定将 localhost 解析为 IPv4,但在自己的机器和服务器上都没有任何效果,怀疑 CGI 方式调用 PHP 的时候是无视主机文件的。
      2.修改所有涉及 localhost 的 PHP 代码,把 localhost 替换成 127.0.0.1 的形式。
                  —— 这样做确实解决了一部分问题,但毕竟不是稳妥之计;而且对于 phpMyAdminphpMyAdmin 等工具而言就只能冒险修改已经调试完善的代码。
      3.禁用相关服务,Win + R 运行命令 services.msc 进入服务项管理,停止一个名称叫 IP Helper,服务名为 iphlpsvc 的服务。
                  —— 与方法 1 类似,看起来有道理但实际上也没起到任何效果。
      4.回避问题,使用 5.2 以降的 PHP,甚至使用虚拟网卡、虚拟机这些办法。
                  —— 拜托,认真的吗??


      很明显,以上方法效果基本没有,因此,通过大量时间对比分析,发现cmd中ping[localhost]其实指向的是::1,你这就好说了,::1是IPV6回环地址,那么只需要将本机的IPV6优先级降低即可。
      只需在windows徽标键上点击右键选择Windows PowerShell(管理员)选项,

两行命令解决Windows的localhost解析为::1导致数据库、PHP+Mysql等请求缓慢问题


贴一下命令:

netsh int ipv6 set prefix ::/96 50 0
先执行上面的
netsh int ipv6 set prefix ::1/128 1 9


转载请注明来源: 两行命令解决Windows的localhost解析为::1导致数据库、PHP+Mysql等请求缓慢问题

本文永久链接地址: https://www.enboo.cn/CMSjiaocheng/qitajiaocheng/21113.html

文本标签:请求缓慢问题

郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。
若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。 我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如无法链接失效或侵犯版权,请给我们来信:2225329841@qq.com