Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP5性能比较,Windows和Linux_Php_Performance_Apc - Fatal编程技术网

PHP5性能比较,Windows和Linux

PHP5性能比较,Windows和Linux,php,performance,apc,Php,Performance,Apc,我有一个关于Symfony2性能的问题 我已经在Ubuntu11.04下用Symfony2开发了几个星期了,Apache2.2.17,PHP5.3.5,APC3.1.9,没有xDebug 在开发环境中,Symfony2工具栏上给出的时间从未超过70毫秒 今天,我尝试在Windows7环境中安装我的应用程序:WampServer2.2、PHP5.3.8、Apache2.2.21、APC3.1.7,没有xDebug windows环境下的计算机比ubuntu(SSD、四核等)上的计算机要好得多 当我

我有一个关于Symfony2性能的问题

我已经在Ubuntu11.04下用Symfony2开发了几个星期了,Apache2.2.17,PHP5.3.5,APC3.1.9,没有xDebug

在开发环境中,Symfony2工具栏上给出的时间从未超过70毫秒

今天,我尝试在Windows7环境中安装我的应用程序:WampServer2.2、PHP5.3.8、Apache2.2.21、APC3.1.7,没有xDebug

windows环境下的计算机比ubuntu(SSD、四核等)上的计算机要好得多

当我在dev环境中运行应用程序时,工具栏总是指示至少300毫秒

那么,你知道这是怎么可能的吗

谢谢

编辑:找到有关主题的链接:

我注意到file_exists函数也有问题(使用webgrind)

有什么想法吗

也许这个话题已经讨论过了,但是我很惊讶没有发现任何相关的东西。

有趣的发现

我想说,因为这根本不是symfony2的问题,所以必须用PHP二进制文件修复


但到底是谁在windows上运行他的Web服务器呢DTL;博士将realpath\u cache\u size设置为大于1000的值

编辑2:此PR中解决的问题:尝试将PHP.ini的realpath\u cache\u大小设置为>1000的值 最近添加了symfony要求以解决此问题:

编辑:我刚刚看到了这个答案: 当我在php.ini中设置realpath\u cache\u size=4096k时,在windows上的页面生成时间减少了4倍(!)

旧答案:

因此,我用webgrind对两者进行了比较:

在windows(快速计算机)上,称为app_dev.php:

因此,您可以看到web工具栏显示764ms的时间生成(由于xDebug和评测而增加,但仍然相关)。 Webgrind显示:

  • 651次对文件_exists()的调用,时间为232ms(太多了!)
  • 603对filemtime()的调用(211ms)
  • 230对UniversalClassLoader->loadClass()的调用(119ms)
  • 230对UniversalClassLoader->findFile()的调用(38ms)
在linux(慢速计算机)上,app_dev.php:

总生成时间为298毫秒(比windows上少两倍多)

  • 237次调用UniversalClassLoader->findFile()(36ms=>4次)
  • 237次调用UniversalClassLoader->loadClass()(20ms=>2次)
  • 623个对文件_exists()的调用(仅4ms!!!)
  • 605调用filemtime()(仅4ms!!!)
问题似乎是file_exists()和filemtime(),它们在windows上比在Linux上慢得多。在windows上,PHP会在60%的时间内查找包含file_exists、filemtime、loadClass或findFile的文件。这是一个已知的问题吗


编辑:所以问题只存在于开发环境中,在生产环境中,由于所有内容都被缓存,因此不存在任何文件。\p>尝试使用ApcUniversalClassLoader

我刚开始在Windows下使用Symfony2进行开发,这是一个非常麻烦的问题-我测试了xcache、apc和eaccelerator,它们要么几乎没有任何区别,要么在与xdebug一起使用时崩溃

现在我发现了微软的WinCache,这使得Windows下的Symfony2速度惊人。。。 我的请求花费了1.5到3秒的时间——WinCache的时间降到了200ms。而且它甚至不打扰xdebug-评测和调试仍然像一个魅力一样工作。
编辑:这都是关于开发环境的

唯一的缺点是它只在nts php上运行,我认为apache模块需要ts—如果您使用fcgid运行它,尽管不会有任何问题

我不敢相信我这么多年没有这个怪物

链接:



它已经完成,但只在生产环境中使用:在开发环境中,自动使用“调试”加载程序。我的问题是:为什么windows比linux慢?@Nanocom是认真的吗?众所周知,linux比windows更好更快。很简单。你不会让我相信fle_的存在,而且windows上的filemtime比linux慢50倍。这是个好发现。我相信
文件\u exists()
filemtime()
用于检查配置是否已更改。是否有办法防止这些调用并像sf1中那样手动清除缓存?是的,当然在生产中没有这样的调用,但有趣的是Windows和Linux在开发环境上的差异。一位同事发现WinCache覆盖了一些PHP函数,然后在Windows优化的行为中重新实现——文件_exists就是其中之一:值得注意的是,WinCache仅在使用IIS时才适用。Uhh,不是吗?我在测试中使用了nginx和PHP,而不是fastcgi。谁在运行它们?可能是在windows下开发的人?你会惊讶我们有这么多人;)我个人:windows在家,linux在工作。无论如何,我认为你基本上是对的,这与Windows下的PHP或Apache有很大关系。一些开发人员不得不使用Windows来适应公司的规则。fossplanet.com URL似乎被破坏了