我在最近几个月遇到的问题是在我的本地环境中命令缓存:clear非常慢。很多时候需要一分多钟。我尝试了XAMPP和WAMP,但它没有帮助。我尝试通过删除不同的服务和包来解决,但情况仍然相同。
最后,我发现问题与我在 Resources / Views 文件夹中的 Twig 文件的数量成正比。我甚至用标准命令
创建了一个新的symfony项目composer create-project symfony / framework-standard-edition test-performance-project“2.7。*”
并创建了一个简单的标准控制器和twig文件来检查我的假设。我在 Resources / Views 文件夹中添加的twig文件越多,cache:clear命令就越慢(或多或少成比例)。有没有办法防止这种情况,因为在我们的项目中,我们的 Resources 文件夹中有大量 twig 文件。
我正在使用
Windows 10 PHP 7.0.15 Symfony 2.7.23 Twig 1.31.0
任何帮助都将受到高度赞赏:)
答案 0 :(得分:5)
我在cli环境中启用xdebug时遇到了类似的问题。 Twig解析对模板文件进行了大量迭代,因此xdebug对twig缓存生成性能产生巨大影响。
尝试在php cli配置中注释掉这一行:
;zend_extension=xdebug.so
答案 1 :(得分:1)
我在提高xdebug的同时提高Windows 10性能的事情。
已启用的操作缓存
禁用了xdebug.remote_autostart
添加了x-debug帮助程序扩展
提示:如果您具有带有remote_autostart 1的xdebug扩展,即使没有任何断点,也应始终在IDE中保持监听器,否则,一切将运行得非常慢(请参阅案例) 6)。
一些使用小型symfony 4.2项目的测试,在开发模式下,时间是从Chrome中获取DomContentLoaded :
我通常使用情况1,当我需要调试时,我切换到情况2。 情况3、4、5、6与可能不了解IDE侦听器和调试cookie含义的人有关。
我在启用Windows子系统的Linux(WSL)的情况下测试了同一项目,并得到了一些改进。 没有缓存时的加载时间:
整体WSL改善了一切,将加载时间减少了50%。
PS:要使WSL正常工作,您必须禁用Windows Defender实时保护,否则,所有操作的速度将比没有WSL时慢2倍。也许有一些选项可以保留实时保护并排除WSL,但我目前不知道。
答案 2 :(得分:0)
我对cache:clear
的速度感到惊讶的是,用xdebug.profiler_enable = off
关闭了探查器。
我在Windows以及PHP 7.1和7.2上使用WAMP。
使用WAMP(但不仅限于此),本地Web主机和您的控制台可能未使用相同的php.ini文件。
如果您可能在浏览器中检查phpinfo()
的输出,则可能发现探查器已关闭。但是,当您在控制台中运行cache:clear
时,控制台可能没有使用同一个php.ini文件-就像我这样。
从控制台真正使用的php.ini运行了探查器,这导致PHP创建了许多GB的cachegrind文件,所有这些文件在后台都对我隐藏了。我只是在cache:clear
发生时检查资源管理器的HDD使用情况时才注意到它的。
当探查器最终关闭时,cache:clear至少快了5倍。
答案 3 :(得分:-1)
symfony核心开发人员问我他总是rm -fr var/cache/*
所以我总是在运行我的应用程序之前这样做。
同样在config_dev.yml中,make template caching false
twig:
cache:false