我在Linux(Debian)盒子上写了一些PHP和MySQL脚本(在LAMPP上运行)。 请求大约2000个MySQL行在大约0.001秒内执行并返回数据的页面,更新此MySQL表的循环脚本(multithreading)在后台运行,每个循环使用约10秒。
我们刚刚升级了我们的盒子(全新的PC),在CPU上获得了四倍的RAM和更高的时钟速度。 这个盒子安装了Windows Server 2008(和XAMPP)。 在Linux上运行的脚本完全相同,现在可以在Windows上运行,但是:
究竟是怎么回事? 在Windows上运行PHP和MySQL有一个已知的问题吗? 如果不是的话,那么我怎么去弄清楚为什么每一个小命令都是在100秒钟内将CPU抽成几秒钟,当他们在0.001秒的时间内在较小的指定的Linux机器上完成而不打扰CPU呢?
大部分我想知道; 我们有Windows责任或新的盒子? (如果我们在新盒子上安装了Linux,结果如何?)
你可以安装sql express,看看问题是在Windows上的问题(我知道没有问题,但也许你有一个过时的版本?)。 Windows本身并不会成为问题。 在IIS下运行PHP应该没有问题(详情请参阅在IIS上运行PHP应用程序页面)如果直接mysql查询运行得像sql server一样快(相当接近mysql的速度),那么接下来要检查是apache。我遇到的唯一真正的问题是,它被configuration为一个* nix副本的Apache – 这当然可以杀死性能。
原来,这只是运行Windows Server以及每个PHP进程打开的所有CMD的更大开销。 在盒子上安装Debian让一切顺利运行。
当启用了IPv6时,这是一个问题。 在服务器名称上使用localhost (非常常见)会导致连接花费太长时间才能build立。 将其更改为127.0.0.1 。
由于你有一个循环,如果你closures并重新build立连接,它会乘以减速,并使连接快速将产生巨大的差异。