彻底解决 Windows 下 PHP 响应异常缓慢的问题
问题描述
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 地址,因此一旦遇到此类操作时就会出现很长的等待时间。
流传的解决方法
目前网上给出的方法主要有:
- 修改 Windows 的 hosts 文件,加上一行
127.0.0.1 localhost
,随后需要 flushdns 一下。
—— 这样似乎能够显式指定将 localhost 解析为 IPv4,但在自己的机器和服务器上都没有任何效果,怀疑 CGI 方式调用 PHP 的时候是无视主机文件的。 - 修改所有涉及 localhost 的 PHP 代码,把 localhost 替换成
127.0.0.1
的形式。
—— 这样做确实解决了一部分问题,但毕竟不是稳妥之计;而且对于 phpMyAdmin 等工具而言就只能冒险修改已经调试完善的代码。 - 禁用相关服务,Win + R 运行命令
services.msc
进入服务项管理,停止一个名称叫 IP Helper,服务名为iphlpsvc
的服务。
—— 与方法 1 类似,看起来有道理但实际上也没起到任何效果。 - 回避问题,使用 5.2 以降的 PHP,甚至使用虚拟网卡、虚拟机这些办法。
—— 拜托,认真的吗??
比较好的解决办法
最后通过修改注册表禁用 IPv6 组件,较好地解决了问题。新建一个注册表项(扩展名 .reg
的纯文本)文件,内容如下:
Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters]
"DisabledComponents"=dword:000000ff
保存,双击导入(或者按照文件的内容自行修改注册表),重启计算机即可。
彻底解决 Windows 下 PHP 响应异常缓慢的问题相关推荐
- 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 ...
- 解决Windows下Arm下Linux下Qt4程序的中文乱码问题
解决Windows下Arm下Linux下Qt4程序的中文乱码问题 ################################################################### ...
- 解决Windows下运行php Composer出现SSL报错的问题
解决Windows下运行php Composer出现SSL报错的问题 2015-01-14 20:05 在windows下运行composer却出现SSL报错: E:\www>php -f co ...
- python2没有pip命令_解决Windows下python和pip命令无法使用的问题
一. python命令找不到 安装python之后经常会出现下面的问题 , python命令找不到,这是因为Windows的环境变量中没有定义python的安装路径 这个时候我们先找到python的安 ...
- 解决 windows 下浏览器无法上网,QQ/微信正常上网
## 解决 windows 下浏览器无法上网,QQ/微信正常上网 ## 解决 windows 下浏览器无法解析DNS配置 > 注意:本处只**提供一种解决思路,并不代表所有问题都能被解决,可以 ...
- 【异常处理】解决Windows下access denied for user ‘root‘@‘localhost‘(using password:YES)的mysql启动问题
[异常处理]解决Windows下access denied for user 'root'@'localhost'(using password:YES)的mysql启动问题 **原因:**可能是密码 ...
- 解决Windows下无法对docker容器进行端口映射的问题
解决Windows下无法对docker容器进行端口映射的问题 在安装了一个Windows下安装了docker,并尝试在其中运行Nginx服务,但映射完毕之后,在主机的浏览器中,打开localhost: ...
- 记录解决windows下安装cocoapi的几种方案
记录解决windows下安装cocoapi的几种方案 安装cocoapi遇到的常见问题及解决办法 安装流程 问题一 问题二 问题三 安装cocoapi遇到的常见问题及解决办法 安装流程 git clo ...
- 巧妙解决windows下 copy命令不接受太长路径的问题
巧妙解决windows下 copy命令不接受太长路径的问题 参考文章: (1)巧妙解决windows下 copy命令不接受太长路径的问题 (2)https://www.cnblogs.com/xiam ...
最新文章
- W3C近期要闻:W3C战略重点报告新版发布
- 瑞星杀毒全面免费 请下载
- Linux下源码编译安装Redis及如何后台启动Redis
- C/C++经典程序训练1---最大公约数与最小公倍数 SDUT ACM
- Python快速转换numpy数组中Nan和Inf的方法
- 弱电工程施工规划实施
- vue 播放.aac格式的音频文件
- angular封装七牛云图片上传,解决同一页面多个上传按钮分别上传
- 广东省高清卫星影像数据包下载
- 2019,华为一号文
- MOOS-ivp 实验三 MOOS简介(3)
- 电脑之间快速传输超大文件(100GB以上)的方法
- ChatGPT使用案例之自然语言处理
- 2023英语作文模板
- 加速度jsudo:立创电子元器件商城网站功能测评
- 日志系统新贵 Loki,确实比笨重的ELK轻
- python中哈希表和set的使用
- 【Java】网络打字对战小游戏
- 替换插件解决Microsoft Edge浏览器Flash Player地区不兼容问题
- nrf52832与nrf24L01+通信