Symfony2:class 使用 OPcache 编译

Symfony2: class to compile with OPcache

在 Symfony2 中,在 bundle 的扩展文件中,可以调用:

$this->addClassesToCompile([class1, ....])

这会将给定的文件添加到缓存文件中 classes.php => 如果我们将最常用的 类 放在这里,这可以提高性能,因为 PHP 进程只需要查找并处理 1 个文件而不是多个文件。

但是随着PHP的5.6版本,有了OPcache也可以缓存文件,也可以预编译。所以我想 Symfony 部分不再需要了?

通过使用字节码缓存 PHP 本身将缓存 类 与 bootstrapped 缓存文件分开。 APC 已经使用多年来实现这一目标。 PHP5.5 默认包含 OPcache 来处理 opcache。 APC 还允许用户自己轻松添加缓存项,而 OPcache 对用户不可用。

因此,APCu was split from the original APC library so the traditional user caching becomes available for > PHP5.4. More info about Symfony performance can be found in The Book's performance chapter

回答你关于 Symfony bootstrap 的问题:如果你同时使用 bootstrap 缓存和字节码缓存,那么将文件添加到 bootstrap 将导致更大的字节码缓存文件。如果您的应用程序在每个请求中都使用 类(如 kernel.request 侦听器),则将它们添加到 bootstrap 是有意义的。否则它只会增加开销,并且会略微减慢所有其他请求。