性能

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.1,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

性能

ob娱乐下载Symfony是快速,对开箱即用的。当然,如果你真的需要速度,有许多方法,你可以使Symfony更快。ob娱乐下载在本章中,您将探索一些方法让Symfony应用程序更快。ob娱乐下载

使用字节代码缓存(例如OPcache)

你应该做的第一件事来改善你的表现是使用“字节码缓存”。这些缓存存储编译PHP文件,避免为每个请求重新编译它们。

有很多字节代码缓存可用,其中一些是开放源码的。PHP 5.5, PHP了OPcache内置的。对于旧版本,最广泛使用的字节代码缓存APC

使用字节代码缓存真的没有缺点,和Symfony架构在这种类型的环境中执行得很好。ob娱乐下载

监控源文件的变化

大多数字节代码缓存监视器变化的源文件。这将确保如果源文件的变化,自动重新编译字节码。这很方便,但它增加了开销。

出于这个原因,一些字节代码缓存提供一个选项来禁用这些检查。例如,禁用这些检查在APC,简单的添加apc.stat = 0到你的php . ini配置。

当禁用这些检查,它将由服务器管理员,以确保缓存清除任何源文件变化。否则,更新你的应用程序不会被看到。

出于同样的原因,字节码缓存部署应用程序时还必须清除(例如通过调用apc_clear_cache ()当使用APC和PHP函数opcache_reset ()当使用OPcache)。

请注意

在PHP CLI和网络流程不共享相同的OPcache。这意味着你不能清楚的web服务器OPcache通过执行一些命令在您的终端。你需要重新启动web服务器或调用apc_clear_cache ()opcache_reset ()函数通过web服务器(即通过执行这些脚本,你在网络上)。

优化使用Symfony的所有文件ob娱乐下载

默认情况下,PHP的OPcache节省高达2000字节代码缓存中的文件。这个数字太低为典型的Symfony应用程序,所以你应该设定一个更高的限制的ob娱乐下载opcache.max_accelerated_files配置选项:

1 2
;php . iniopcache.max_accelerated_files=20000年

配置PHP realpath缓存

PHP使用内部缓存来存储文件路径映射到他们的真实的结果,绝对的文件系统路径。这增加了应用程序的性能像Symfony打开许多PHP文件,特别是在Windows系统。ob娱乐下载

默认情况下,PHP设置realpath_cache_size16 k这对于Symfony太低。ob娱乐下载考虑更新这个值至少4096 k。此外,缓存路径只是储存120年秒默认情况下。考虑更新这个值使用realpath_cache_ttl选择:

1 2 3
;php . inirealpath_cache_size=4096年Krealpath_cache_ttl=600年

使用作曲家的类映射功能

默认情况下,Symfony标准版ob娱乐下载使用作曲家的自动装卸机autoload.php文件。这个自动装卸机很容易使用,因为它会自动找到任何新类,你放在注册目录。

不幸的是,这是有代价的,因为加载程序遍历所有名称空间找到一个特定的配置文件file_exists ()电话,直到最后找到了文件寻找。

最简单的解决方案是告诉作曲家建立一个优化的“类图”,这是一个大数组的所有类的位置存储在供应商/作曲家/ autoload_classmap.php

类图可以从命令行生成,并且可能成为您的部署过程的一部分:

1
作曲家dump-autoload——优化——no-dev classmap-authoritative美元
——优化
转储每个PSR-0 PSR-4兼容的类中使用您的应用程序。
——no-dev
排除了类只需要在开发环境中(例如测试)。
——classmap-authoritative
防止作曲家扫描文件系统类的类没有找到地图。

缓存与APC的自动装卸机

另一个解决方案是缓存后的每个类的位置位于第一次。ob娱乐下载Symfony提供了一个类ApcClassLoader——这就是这个。使用它,就调整你的前端控制器文件。如果你使用标准的分布,进行以下更改:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/ / app.php/ /……使用ob娱乐下载\组件\类加载器\ApcClassLoader;美元加载程序=需要__DIR__“/ . . / app / autoload.php”;include_once__DIR__“/ . . / app / bootstrap.php.cache”;/ /使用半自动的APC来提高性能/ /改变“sf2”你想要的前缀/ /为了防止关键与另一个应用程序冲突美元加载程序=ApcClassLoader (“sf2”,美元加载程序);美元加载程序- >注册(真正的);/ /……

更多细节,请参阅缓存类装入器

请注意

当使用APC自动装卸机,如果您添加新类,他们将自动发现,一切将会与以前一样(即没有理由“清晰”缓存)。然而,如果你改变一个特定的名称空间和前缀的位置,你需要冲洗APC缓存。否则,自动装卸机仍将关注所有类的老位置在名称空间中。

使用引导文件

以确保最佳的灵活性和代码重用,Symfony应用程序利用各种类和第三方组件。ob娱乐下载但从单独的文件加载所有这些类在每个请求会导致一些开销。减少开销,Symfony标准版提供了一个脚本生成一个所谓的ob娱乐下载引导文件,包含多个类定义在一个文件中。通过包含这个文件(包含很多核心类)的副本,Symfony不再需要包含任何源文件包含这些类。ob娱乐下载这将减少磁盘IO。

如果你使用Symfony标准版,那么你可ob娱乐下载能已经使用引导文件。可以肯定的是,打开你的前端控制器(通常app.php),检查并确保以下行:

1
include_once__DIR__“/ . . / var / bootstrap.php.cache”;

注意,使用引导文件时存在两个缺点:

  • 文件需要重新生成原始来源的任何变化(即当你更新Symfony源或供应商库);ob娱乐下载
  • 在调试时,需要一个破发点在引导文件。

如果你使用Symfony的标准版,引导文ob娱乐下载件自动更新后重建通过供应商库作曲家安装命令。

引导文件和字节代码缓存

甚至使用字节代码缓存时,性能会提高使用引导文件时,因为将会有更少的文件监控的变化。当然,如果禁用这个特性在字节码缓存中(如。apc.stat = 0APC),不再有理由使用引导文件。

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。