性能
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 2.8,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
性能
ob娱乐下载Symfony的速度很快,完全脱离了常规。但是,如果按照下面的性能检查表优化服务器和应用程序,则可以加快速度。
生产服务器检查表
如果您的服务器使用APC,请安装APCu Polyfill
如果您的生产服务器仍然使用遗留的APC PHP扩展而不是OPcache,请安装APCu填充组件在应用程序中启用与APCu PHP函数解锁对高级Symfony特性的支持,比如APCu缓存适配器。ob娱乐下载
为自动加载器启用APC缓存
类自动加载机制是使用大量类的PHP应用程序中最慢的部分之一,比如Symfony。ob娱乐下载改进其性能的一个简单方法是使用ApcClassLoader,它会在第一次定位后缓存每个类的位置。
要使用它,调整你的前端控制器文件,像这样:
1 2 3 4 5 6 7 8 9 10 11
/ / app.php/ /……$加载程序=require_once__DIR__.“/ . . / app / bootstrap.php.cache”;//将“sf”更改为这个应用程序特有的内容以防止//与运行在同一服务器上的其他应用程序冲突$加载程序=新ApcClassLoader (“科幻小说”,$加载程序);$加载程序->注册(真正的);/ /……
详情请参见缓存一个类加载器.
请注意
当使用APC自动加载器时,如果你添加了新的职业,它们将被自动找到,一切都将像以前一样工作(即没有理由“清除”缓存)。但是,如果您更改了特定名称空间或前缀的位置,则需要刷新APC缓存。否则,自动加载器仍将查看该名称空间内所有类的旧位置。
使用引导文件
谨慎
由于PHP 7中引入的优化,在使用PHP 7或更新的PHP版本运行Symfony应用程序时不再需要引导文件。ob娱乐下载
Symfob娱乐下载ony标准版包括一个脚本来生成所谓的引导文件,这是一个包含最常用类的代码的大文件。这节省了大量的IO操作,因为Symfony不再需要查找和读取这些文件。ob娱乐下载
如果您正在使用Symfony标准版,那么ob娱乐下载您可能已经在使用引导文件。当然,打开你的前控制器(通常app.php
),并检查以确保以下行存在:
1
require_once__DIR__.“/ . . / app / bootstrap.php.cache”;
注意,在使用引导文件时有两个缺点:
- 当任何原始源代码发生变化时(即当您更新Symfony源代码或供应商库时),该文件需要重新生成;ob娱乐下载
- 在调试时,需要在引导文件中放置断点。
如果您使用的是Symfony标准版,则在ob娱乐下载通过作曲家安装
命令。
请注意
即使在使用字节码缓存时,使用引导文件也会提高性能,因为需要监视更改的文件更少。当然,如果这个特性在字节码缓存中被禁用(例如。apc.stat = 0
在APC中),不再有理由使用引导文件。
使用OPcache字节码缓存
OPcache存储已编译的PHP文件,以避免为每个请求重新编译它们。有一些字节码缓存,但是从PHP 5.5开始,PHP附带了OPcache内置的。对于旧版本,最广泛使用的字节码缓存是APC.
配置OPcache以获得最大性能
默认的OPcache配置不适合Symfony应用程序,因此建议按照以下方式更改这些设置:ob娱乐下载
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和web进程不共享相同的OPcache,你不能通过在你的终端中执行一些命令来清除web服务器的OPcache。以下是一些可能的解决方案:
- 重启web服务器;
- 调用
apc_clear_cache ()
或opcache_reset ()
通过web服务器的功能(即通过在你在web上执行的脚本中使用这些功能); - 使用cachetool实用程序来控制APC和OPcache从CLI。
配置PHP realpath缓存
当一个相对路径被转换成它的真实和绝对路径时,PHP会缓存结果以提高性能。打开很多PHP文件的应用程序,比如Symfony项目,至少应该使用这些值:ob娱乐下载
1 2 3 4 5 6
;php . ini;分配用于存储结果的最大内存realpath_cache_size=4096K;将结果保存10分钟(600秒)realpath_cache_ttl=600
优化Composer自动加载器
开发应用程序时使用的类装入器经过优化,以查找新的和已更改的类。在生产服务器中,PHP文件永远不应该更改,除非部署了新的应用程序版本。这就是为什么你可以优化Composer的自动加载器来一次扫描整个应用程序,并构建一个“类映射”,这是所有类的位置的一个大数组,它被存储在供应商/作曲家/ autoload_classmap.php
.
执行以下命令生成类映射(并使其成为部署过程的一部分):
1
$ composer dump-autoload——optimize——no-dev——classmap-权威
——优化
dump应用程序中使用的每一个PSR-0和PSR-4兼容类;——no-dev
排除只在开发环境中需要的类(例如测试);——classmap-authoritative
防止Composer扫描文件系统中没有在类映射中找到的类。