繁体   English   中英

Symfony 4 在 Windows 上非常慢

[英]Symfony 4 extremely slow on windows

我在Windows 10上将 Symfony 用于我的项目已有几年(SF2、SF3),最近我转移到Symfony 4来构建一个新项目,但性能却是灾难性的。

Symfony 初始化时间需要 5 到 25 秒,如本例所示例子

与控制台相同:例如cache:clear可以持续 1 分钟。

我在Symfony 文档和论坛中搜索了类似的问题和问题,并测试了推荐的优化(增加​​opcache一些值,启用APCu ,禁用xdebug ,在php.ini添加realpath_cache_size ,使用 Composer Class Map Functionality)但在我的情况它不会改变任何东西。

这是我的 APCu phpinfo:铜 和 Opcache:缓存

我使用的是 PHP 7.1.9、Apache 2.4.27、MariaDB 10.2.8。

有人有同样的问题和/或想法吗?

* 更新 *

我为这个问题找到了一个更好的解决方案 那就是……流浪 我知道你在想什么 - “窗户上的流浪者?大声笑。”。 但这里发生了变化 - 现在有一个用于 Windows 上 NFS 文件夹同步插件 我已经在两台 win10 电脑上测试过它,到目前为止一切都很好。 这对我来说似乎非常稳定,而且我的响应时间低至 40-50 毫秒(当然,symfony 正在重新生成/预热缓存等的时间除外)。 Composer 安装、IDE 同步和其他东西也都运行良好。

除此之外,我在 ubuntu 仿生虚拟机 VM 上有相当标准的设置,包括 nginx 和 php7.2-fpm。 没有什么特别的或以任何方式优化的。

如果你不喜欢流浪,我仍然在下面留下我的旧答案以供参考。 祝你好运,编码愉快!

* // 更新 *

Symfony 在 Windows 上的性能一直很差,至少对我来说是这样。

启用/禁用 opcache/apc/xdebug、调整 realpath 或任何可以 - 可能 - 使事情变得更好的东西,至少一点点,但在我的经验中从来没有真正起作用。 而且……到底谁想在没有调试器的情况下工作? 在我看来,这不是解决方案。

我的建议是完全删除 XAMPP / WAMP(或者你已经安装了当前的 php 堆栈)并安装 nginx + php-fpm。

您可以自己动手完成它- 例如-或通过安装WinNMP

WinNMP 是一个非常类似于 XAMPP / WAMP 的工具,但基于 nginx。 它带有 Nginx、PHP、MySQL 和 Redis。

唯一的缺点是您必须学习如何配置 nginx - 如果您不知道 - 但无论如何您都应该学习。 Nginx 的性能更高,因此 - 在大多数情况下 - 更适合生产环境,因此它在未来可能会有所帮助。

无论如何,这是我发现在 Windows 上使用 symfony 的唯一可行解决方案,我不必在每次刷新时禁用 xdebug 或等待时间:)

在此处输入图片说明

  • 您是否使用localhost连接到数据库(或其他任何东西)? 将其更改为127.0.0.1

  • 如果配置不正确,JMS DI Extra 包可以在 Windows 上执行此操作。

  • 其他人提到了 xdebug 和 realpath_cache_size,这些也是常见的罪魁祸首。

使用内置开发服务器而不是 WAMP。 安装开发服务器包:

作曲家需要 --dev symfony/web-server-bundle

运行服务器:

php bin/控制台服务器:运行

我有一个 Symfony 问题,每个请求的初始化需要 3-5 秒,这使得本地开发非常缓慢。 我尝试了一切来改进它(php.ini 设置更改、升级 php 等),我终于在 xDebug 中启动了 Symfony,发现每个页面请求都在重建开发缓存,并且正在触发文件 services.yaml缓存重建。

当我查看 Services.yaml 文件时,我意识到修改后的时间是在未来,因为我正在测试时间更改并将我的计算机时间移到未来并在此期间保存了 services.yaml 文件。 当我在当前时间重新保存文件时,它停止每次都强制重建缓存。

在 Windows 上,我会推荐 WSL2。 您可以安装 Apache2 和 Mysql 并为您的项目设置一个虚拟主机。 它的运行速度明显快于内置服务器。

同样在这里,我有 Windows 10 Professional,使用 XAMPP(尝试过 php 5 和 php 7,无所谓)。

我还尝试使用内置服务器和 php bin/console server:run

我正在使用 json 响应控制器,运行大约需要 30 到 45 秒,有时甚至需要一分钟以上的时间来处理。 我的 Api 请求甚至返回超时错误。

另外,我用 php bin/console 做的每一个操作都非常慢。所以我认为不仅仅是 XAMMP 中的 Apache,而是随它分发的 PHP 包。

我刚刚从http://windows.php.net安装了 php-7-2 包,现在它运行得更好了。 响应时间长达 3-4 秒。

所以不要浪费你的时间使用 XAMPP ......只需选择原始的 PHP 和 Apache 就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM