问题描述

PHP 写的后端程序,一旦涉及数据库操作,响应就会变得异常得慢(这里的异常是指:同样的程序在 Linux 下执行,速度没有问题),常常需要等待数十秒,但每次的返回结果中,实际用于执行 SQL 查询的时间均短至毫秒量级。

PHP 版本:7.2.25、7.2.13、7.1.33、5.3.3,无论老版本还是目前 7.2 最新的子版本都有一样的问题,看来官方似乎并不想处理。

问题排查

进行查询操作请求时,我用的代码是如下的形式:

$db_host = "localhost";
$db_connect = mysqli_connect($db_host,$db_username,$db_password,$db_targetdb);
// mysqli_query ...

通过搜索了解到 PHP 在 Windows 下运行时,遇到 localhost 会尝试先将其解析成 IPv6 地址,当无法解析或者无法用 IPv6 连接数据库时会等待超时,再尝试解析成 IPv4 地址,因此一旦遇到此类操作时就会出现很长的等待时间。

流传的解决方法

目前网上给出的方法主要有:

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

比较好的解决办法

最后通过修改注册表禁用 IPv6 组件,较好地解决了问题。新建一个注册表项(扩展名 .reg 的纯文本)文件,内容如下:

Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:000000ff

保存,双击导入(或者按照文件的内容自行修改注册表),重启计算机即可。

彻底解决 Windows 下 PHP 响应异常缓慢的问题相关推荐

  1. python进程池win出错_解决windows下python3使用multiprocessing.Pool出现的问题

    例如: from multiprocessing import Pool def f(x): return x*x pool = Pool(processes=4) r=pool.map(f, ran ...

  2. 解决Windows下Arm下Linux下Qt4程序的中文乱码问题

    解决Windows下Arm下Linux下Qt4程序的中文乱码问题 ################################################################### ...

  3. 解决Windows下运行php Composer出现SSL报错的问题

    解决Windows下运行php Composer出现SSL报错的问题 2015-01-14 20:05 在windows下运行composer却出现SSL报错: E:\www>php -f co ...

  4. python2没有pip命令_解决Windows下python和pip命令无法使用的问题

    一. python命令找不到 安装python之后经常会出现下面的问题 , python命令找不到,这是因为Windows的环境变量中没有定义python的安装路径 这个时候我们先找到python的安 ...

  5. 解决 windows 下浏览器无法上网,QQ/微信正常上网

    ##  解决 windows 下浏览器无法上网,QQ/微信正常上网 ## 解决 windows 下浏览器无法解析DNS配置 > 注意:本处只**提供一种解决思路,并不代表所有问题都能被解决,可以 ...

  6. 【异常处理】解决Windows下access denied for user ‘root‘@‘localhost‘(using password:YES)的mysql启动问题

    [异常处理]解决Windows下access denied for user 'root'@'localhost'(using password:YES)的mysql启动问题 **原因:**可能是密码 ...

  7. 解决Windows下无法对docker容器进行端口映射的问题

    解决Windows下无法对docker容器进行端口映射的问题 在安装了一个Windows下安装了docker,并尝试在其中运行Nginx服务,但映射完毕之后,在主机的浏览器中,打开localhost: ...

  8. 记录解决windows下安装cocoapi的几种方案

    记录解决windows下安装cocoapi的几种方案 安装cocoapi遇到的常见问题及解决办法 安装流程 问题一 问题二 问题三 安装cocoapi遇到的常见问题及解决办法 安装流程 git clo ...

  9. 巧妙解决windows下 copy命令不接受太长路径的问题

    巧妙解决windows下 copy命令不接受太长路径的问题 参考文章: (1)巧妙解决windows下 copy命令不接受太长路径的问题 (2)https://www.cnblogs.com/xiam ...

最新文章

  1. W3C近期要闻:W3C战略重点报告新版发布
  2. 瑞星杀毒全面免费 请下载
  3. Linux下源码编译安装Redis及如何后台启动Redis
  4. C/C++经典程序训练1---最大公约数与最小公倍数 SDUT ACM
  5. Python快速转换numpy数组中Nan和Inf的方法
  6. 弱电工程施工规划实施
  7. vue 播放.aac格式的音频文件
  8. angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
  9. 广东省高清卫星影像数据包下载
  10. 2019,华为一号文
  11. MOOS-ivp 实验三 MOOS简介(3)
  12. 电脑之间快速传输超大文件(100GB以上)的方法
  13. ChatGPT使用案例之自然语言处理
  14. 2023英语作文模板
  15. 加速度jsudo:立创电子元器件商城网站功能测评
  16. 日志系统新贵 Loki,确实比笨重的ELK轻
  17. python中哈希表和set的使用
  18. 【Java】网络打字对战小游戏
  19. 替换插件解决Microsoft Edge浏览器Flash Player地区不兼容问题
  20. nrf52832与nrf24L01+通信

热门文章

  1. python笔记-05(条件、循环及其他语句)
  2. 2021-10-27 求方向盘转角
  3. iPad air 1 7.1.2升级IOS 11
  4. 愿得一心人:硅谷亿万富豪们的婚姻怎样?有人白首相守七十年
  5. 一统iOS跟macOS,未来办公靠手机?
  6. excel中如何在一列数据的前面统一加上一个符号
  7. jQuery带logo的网页二维码生成
  8. js实现获取当前时间是本月第几周和年的第几周的方法
  9. MATLAB点云处理(十四):圆柱体拟合(RANSAC | MSAC)
  10. myeclipse 2015 stable2.0破解安装教程