php - Windows 7 php + Symfony2 非常慢

标签 php performance windows-7 apache2 page-load-time

这是我长期以来一直遇到的问题。我想在我的 Windows 计算机上运行 PHP 应用程序,它的加载时间非常长,大约 10-25 秒。我尝试了很多东西:

  • 首先我尝试了一个简单的 XAMPP 安装
  • 我阅读 WAMP 可能会更快,所以我也尝试了 WAMP。它给了我同样的结果
  • 然后我用 PHP 安装了一个 nginx 服务器,但它也没有帮助
  • 最后,我在 VirtualBox 中安装了 Ubuntu 11.10,并分享了包含我的项目的 windows 文件,但结果更糟:每次加载时间超过 22 秒。

更新:我什至尝试过 APC - 它有所改进,但仍然是 6-8 秒/页

我将我的文件上传到一个 linux 服务器(共享主机),它在大约 300-500 毫秒内运行。在 XAMPP 安装中,我也尝试运行其他(即不是 Symfony2)应用程序(例如 phpmyadmin),它们也比在共享主机上慢,但不是非常慢,加载时间为 2-3 秒。在我改用 Linux 作为主要操作系统之前,我怎样才能提高性能?我有一台配备 i7 CPU、4 GB RAM、5400RPM HDD、Win7 x64 的笔记本电脑。

感谢您的帮助!

UPDATE2:出于某种神秘的原因,我的 Symfony 路由不能与 fcgid 一起使用(它给了我一个 404 错误)所以我回去使用 PHP 作为一个模块。现在,它已经成为有史以来最糟糕的(比以前作为一个模块更糟糕):应用程序模式 20-25 秒,在开发模式下,每次超过 30 秒,所以我得到一个超时错误,它与 or 相同未启用 APC。

Here你可以看到这个错误。这是可重现的:每次在 30 秒内到达不同的执行点:

enter image description here

最佳答案

更新:

由于 PHP 5.5 现在集成了 PHP OPCache,这加快了执行时间。在我的设置中,一个完整的数据库访问请求现在需要 180 毫秒。

步骤:

  1. 更新到最新的php版本
  2. 启用 OPCache
  3. 禁用 xdebug
  4. 将 realpath_cache_size = 2M 设置为 DemonTPx 提到的

php.ini 设置:

realpath_cache_size = 2M
[XDebug]
xdebug.profiler_enable = 0
xdebug.remote_enable = 0
[opcache]
zend_extension = "C:\xampp18\php\ext\php_opcache.dll"
opcache.enable = 1
opcache.enable_cli = 0
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000

为什么 Windows 比 Unix 慢?

正如所讨论的 here , PHP 在 file_exists 和 Windows 上的 filemtime() 中非常慢。因为 Symfony2 在开发模式下大量使用这些功能。在 Windows 上,我们不会低于 700 毫秒(在 <= 5.4 中)。 PHP 5.5 现在允许 180 毫秒。

解决方案可以是 WinCache它是由微软开发的,用于解决 IIS 上的这个问题。但由于它只适用于几个 Windows 版本,而且也只适用于 IIS,所以它对我来说不是解决方案。

替代方案

我可以推荐的一个不错的解决方案是在 Virtualbox 上安装一个 Linux 虚拟机。这很容易设置,也更像是生产环境。

关于php - Windows 7 php + Symfony2 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9854848/

相关文章:

php - 如何注释包含 */的字符串

php - cURL 请求 - 我该如何做?

php - 如何配置 PhpStorm 以使用 symfony/phpunit-bridge

c++ - 在 Visual Studio 中发布版本仍然更慢?

windows - 为什么 CGIHTTPServer 在 Windows 中这么慢?

c++ - 线程阻止创建窗口

windows-7 - Windows 7 功能区 : How to specify "Four buttons, two big, two small"?

php - 尝试通过表单插入数据库时​​出错。 SQLSTATE[42S22]

algorithm - 子字符串在字符串中出现的性能

delphi - 在 Windows 7 上的 Delphi 2007 中枚举终端服务 session