Am running a PHP based web app on our Windows 2008 cloud-based server. The app, which runs fine outside of our environment (e.g. a different IIS server), but is VERY slow in our environment. Based on googling this is a relatively common situation.
I installed PHP and MySQL via the IIS web deployment method...
Here's our setup:
- Windows 2008 Server Enterprise SP2 (32-bit)
- Microsoft-IIS/7.0
- MySQL client version: mysqlnd 5.0.8-dev - 20102224 $Revision: 321634 $
- PHP extension: mysqli
- Update for IIS 7.0 FastCGI
- Windows Cache Extension 1.1 for PHP 5.3
I had read elsewhere that ipv6 might be an issue, so I turned this off on the network adapter.
The app is using: localhost as its connection
Be easy on me, as I'm a bit green about some of these components... Also, rewriting the PHP app or modifying it is NOT an option. I'm reasonably SURE that our config is the issue.
I had a similar issue. Migrated a php app from iis6 to iis8, and on iis8 was very very slow!
Solution: In the application itself, point it to 127.0.0.1 as the mysql server name (rather than localhost). Seems that there are either resolution issues or IPv6 issues related to using the host name localhost.
127.0.0.1 solves.
There is a good presentation on PHP on Windows here
This article suggests you get the non-thread safe php binaries for Windows. Have you looked at that?
Did you use the Microsoft web installer or configure php et al. yourself?
Wincache seems like a good idea too: http://www.iis.net/download/WinCacheForPhp
Based on this blog post, Fix: php mysql is VERY slow, I determined that in my case the problem is a result of MySQL name resolution. Please see this for full documentation, but you should be able to correct the issue by modifying adding the following to your
my.ini
and restarting mysqld.Your response times should dramatically increase. Unfortunately, you will no longer be able to connect to MySQL using hostnames and will instead be required to use IP addresses.