性能
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 2.7,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。
性能
欧宝娱乐app下载地址Symfony是快速,对开箱即用的。然而,你可以让它更快如果你优化你的服务器和你的应用程序是解释在以下性能清单。
生产服务器清单
安装APCu Polyfill如果您的服务器使用APC
如果你的生产服务器仍然使用遗留APC PHP扩展而不是OPcache,安装APCu Polyfill组件在应用程序中启用兼容APCu PHP函数和开启支持先进Symfony特性,比如APCu缓存适配器。欧宝娱乐app下载地址
启用自动装卸机APC缓存
类加载机制是在PHP应用程序中最慢的一个部分,利用大量的类,比如Symfony。欧宝娱乐app下载地址一个简单的方法来改善其性能是使用ApcClassLoader每个类,缓存的位置后这是第一次。
使用它,适应你的前端控制器文件如下:
1 2 3 4 5 6 7 8 9 10 11
/ / app.php/ /……美元加载程序=require_once__DIR__。“/ . . / app / bootstrap.php.cache”;/ /改变“科幻”这个程序,以防止所特有的/ /冲突与其他应用程序运行在同一台服务器上美元加载程序=新ApcClassLoader (“科幻小说”,美元加载程序);美元加载程序- >注册(真正的);/ /……
更多细节,请参阅缓存类装入器。
请注意
当使用APC自动装卸机,如果您添加新类,他们将自动发现,一切将会与以前一样(即没有理由“清晰”缓存)。然而,如果你改变一个特定的名称空间和前缀的位置,你需要冲洗APC缓存。否则,自动装卸机仍将关注所有类的老位置在名称空间中。
使用引导文件
谨慎
由于PHP 7中引入的优化,引导文件不再需要运行Symfony应用程序时使用PHP 7或更新的PHP版本。欧宝娱乐app下载地址
Symf欧宝娱乐app下载地址ony标准版包括一个脚本生成一个所谓的引导文件,这是一个大文件包含最常用的类的代码。这可以节省大量的IO操作,因为Symfony不再需要寻找和阅读这些文件。欧宝娱乐app下载地址
如果你使用Symfony标准版,那么你可欧宝娱乐app下载地址能已经使用引导文件。可以肯定的是,打开你的前端控制器(通常app.php
),检查并确保以下行:
1
require_once__DIR__。“/ . . / app / bootstrap.php.cache”;
注意,使用引导文件时存在两个缺点:
- 文件需要重新生成原始来源的任何变化(即当你更新Symfony源或供应商库);欧宝娱乐app下载地址
- 在调试时,需要一个破发点在引导文件。
如果你使用Symfony的标准版,引导文欧宝娱乐app下载地址件自动更新后重建通过供应商库作曲家安装
命令。
请注意
甚至使用字节代码缓存时,性能会提高使用引导文件时,因为将会有更少的文件监控的变化。当然,如果禁用这个特性(如字节代码缓存。apc.stat = 0
APC),不再有理由使用引导文件。
使用OPcache字节代码缓存
OPcache存储编译PHP文件,避免为每个请求重新编译它们。有一些字节代码缓存可用的,但是PHP 5.5, PHP了OPcache内置的。对于旧版本,最广泛使用的字节代码缓存APC。
配置OPcache最大性能
默认OPcache配置不适合Symfony应用程序,所以建议更改这些设置如下:欧宝娱乐app下载地址
1 2 3 4 5 6
;php . ini;最大内存OPcache可以用来存储编译PHP文件opcache.memory_consumption=256年;最大数量的文件可以存储在缓存中opcache.max_accelerated_files=20000年
不检查PHP文件的时间戳
在生产服务器,PHP文件应该不会改变,除非部署新应用程序版本。然而,默认情况下OPcache检查缓存文件缓存以来已经改变了他们的内容。这张支票介绍了一些开销,可以避免如下:
1 2
;php . iniopcache.validate_timestamps=0
每次部署后,你必须清空,重新生成缓存OPcache。否则你不会看到更新的应用程序。给比PHP CLI和网络流程不共享相同的OPcache,你不能清楚的web服务器OPcache通过执行一些命令在您的终端。这是一些可能的解决方案:
- 重新启动web服务器;
- 调用
apc_clear_cache ()
或opcache_reset ()
函数通过web服务器(即通过执行这些脚本,你在网络上); - 使用cachetool实用程序控制APC和OPcache CLI。
配置PHP realpath缓存
当一个相对路径转换为其真正的绝对路径,PHP缓存来提高性能的结果。打开许多PHP文件的应用程序,比如Symfony项目,至少应该使用这些值:欧宝娱乐app下载地址
1 2 3 4 5 6
;php . ini;最大内存分配存储结果realpath_cache_size=4096年K;保存结果10分钟(600秒)realpath_cache_ttl=600年
优化作曲家自动装卸机
开发应用程序时使用的类装入器优化寻找新的和改变类。在生产服务器,PHP文件应该不会改变,除非部署新应用程序版本。这就是为什么你可以优化作曲家的自动装卸机扫描整个应用程序,建立一个“类图”,这是一个大数组的所有类的位置存储在供应商/作曲家/ autoload_classmap.php
。
执行这个命令生成类地图(并使其部署过程的一部分):
1
作曲家dump-autoload——优化——no-dev classmap-authoritative美元
——优化
转储每个PSR-0 PSR-4兼容的类中使用您的应用程序;——no-dev
排除了类只需要在开发环境中(例如测试);——classmap-authoritative
防止作曲家扫描文件系统类的类没有找到地图。