性能
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 3.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
性能
ob娱乐下载Symfony是快速,对开箱即用的。当然,如果你真的需要速度,有许多方法,你可以使Symfony更快。ob娱乐下载在本章中,您将探索许多最常见的和强大的方式让你的Symfony应用程序更快。ob娱乐下载
使用字节代码缓存(例如APC)
最好的一个(简单的),你应该做的事来提高你的表现是使用“字节码缓存”。字节代码缓存的想法是把需要不断重新编译PHP源代码。有很多字节代码缓存可用,其中一些是开放源码的。PHP 5.5, PHP了OPcache内置的。对于旧版本,缓存可能是最广泛使用的字节码APC
使用字节代码缓存真的没有缺点,和Symfony架构在这种类型的环境中执行得很好。ob娱乐下载
进一步优化
字节代码缓存通常监测变化的源文件。这将确保如果源文件的变化,自动重新编译字节码。这真的是方便,但显然增加了开销。
出于这个原因,一些字节代码缓存提供一个选项来禁用这些检查。显然,当禁用这些检查,它将由服务器管理员,以确保缓存清除任何源文件变化。否则,你不会被更新。
例如,禁用这些检查在APC,简单的添加apc.stat = 0
到你的php . ini
配置。
使用作曲家的类映射功能
默认情况下,Symfony标准版ob娱乐下载使用作曲家的自动装卸机autoload.php文件。这个自动装卸机很容易使用,因为它会自动找到任何新类,你放在注册目录。
不幸的是,这是有代价的,因为加载程序遍历所有名称空间找到一个特定的配置文件file_exists
电话,直到最后找到了文件寻找。
最简单的解决方案是告诉作曲家来构建一个“类地图”(即一个大数组的所有类的位置)。这可以从命令行完成,可能会成为您的部署过程的一部分:
1
作曲家dump-autoload美元——优化
在内部,这个构建的类映射数组供应商/作曲家/ autoload_classmap.php
。
缓存与APC的自动装卸机
另一个解决方案是缓存后的每个类的位置位于第一次。ob娱乐下载Symfony提供了一个类ApcClassLoader——这就是这个。使用它,就调整你的前端控制器文件。如果你使用标准的分布,这段代码在这个文件应该已经可以评论:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
/ / app.php/ /……美元加载程序=需要__DIR__。“/ . . / app / autoload.php”;include_once__DIR__。“/ . . / var / bootstrap.php.cache”;/ /为半自动的启用APC来提高性能。/ /你应该改变ApcClassLoader第一个参数一个独特的前缀/ /为了防止与其他应用程序的缓存键冲突/ /使用APC。/ * $ apcLoader =新Syob娱乐下载mfony \组件\类加载器\ ApcClassLoader (sha1 (__FILE__)、装载机美元);$装载机- >注销();$ apcLoader - >注册(真正的);* // /……
更多细节,请参阅缓存类装入器。
请注意
当使用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 = 0
APC),不再有理由使用引导文件。