我在基于 Windows 2008 的云服务器上运行基于 PHP 的 Web 应用程序。该应用程序在我们的环境之外运行良好(例如不同的 IIS 服务器),但在我们的环境中运行速度非常慢。根据谷歌搜索,这是一种相对常见的情况。
我通过 IIS Web 部署方法安装了 PHP 和 MySQL...
这是我们的设置:
- Windows 2008 Server Enterprise SP2(32 位)
- Microsoft-IIS/7.0
- MySQL 客户端版本:mysqlnd 5.0.8-dev - 20102224$Revision: 321634$
- PHP 扩展:mysqli
- 针对 IIS 7.0 FastCGI 的更新
- 适用于 PHP 5.3 的 Windows 缓存扩展 1.1
我在其他地方读到过 IPv6 可能是一个问题,所以我在网络适配器上关闭了它。
该应用程序正在使用:localhost作为其连接
对我宽容点,因为我对其中一些组件不太熟悉...另外,重写 PHP 应用程序或修改它不是一个选项。我相当肯定我们的配置是问题所在。
答案1
我遇到了类似的问题。将 php 应用程序从 iis6 迁移到 iis8,但在 iis8 上运行非常非常慢!
解决方案:在应用程序本身中,将其指向 127.0.0.1 作为 mysql 服务器名称(而不是 localhost)。似乎存在与使用主机名 localhost 相关的解析问题或 IPv6 问题。
127.0.0.1 解决。
答案2
这里有一篇关于 Windows 上 PHP 的精彩演示这里
这文章建议您获取适用于 Windows 的非线程安全 php 二进制文件。您看过了吗?
你用过Microsoft Web 安装程序或者自己配置 php 等?
Wincache 似乎也是一个好主意:http://www.iis.net/download/WinCacheForPhp
答案3
根据这篇博文,修复:php mysql 非常慢,我确定,在我的案例中,问题是由于 MySQL 名称解析造成的。请参阅这以获取完整文档,但您应该能够通过修改以下内容my.ini
并重新启动 mysqld 来解决问题。
# Do cache host names.
skip-host-cache
# Do not resolve hostnames. All hostnames are IP's or 'localhost'.
skip-name-resolve
您的响应时间应该会显著增加。遗憾的是,您将无法再使用主机名连接到 MySQL,而是需要使用 IP 地址。