在 Symfony2 中,哪种 class 路径缓存方法性能更高:Composer class 映射或使用 APCu 的 ApcClassLoader?
In Symfony2, which classpath caching method is more performant: Composer class map or ApcClassLoader using APCu?
阅读 Symfony2 性能文档:http://symfony.com/doc/2.8/performance.html
我正在尝试找出哪种解决方案更适合缓存 class 名称路径。我正在使用 PHP7,所以 APC 不可用,只有 apcu 和 opcache。鉴于我对实施缓存或必须重新启动 Web 服务器的复杂性没有任何问题,哪个是最高性能的?此外,如果我确实使用 APC 自动加载器,app.php 代码仍然必须首先加载作曲家 autoload.php,创建 ApcClassLoader,然后注销初始自动加载器。清除 class 地图是否有意义,这样未使用的地图就不会浪费太多内存,即 运行: composer dump-autoload --no-dev
?
用于设置自动加载的 'gold standard' 在生产环境中 正如 symfony 文档所说:composer dump-autoload --optimize --no-dev --classmap-authoritative
。
- --optimize 转储应用程序中使用的所有 PSR-0 和 PSR-4 兼容 class。
- --no-dev 排除仅在开发环境(例如测试)中需要的class。
- --classmap-authoritative 防止 Composer 扫描文件系统以查找在 class 中找不到的 classes地图。
在开发中,这样的优化可能太多了,因为您编写的每个新 class 都至少需要一个 composer dump-autoload
- 灵活性更有用。
一旦 classmap 被写入光盘一次,然后读回,它无论如何都可以通过 OpCache 获得,因此它实际上已经在 PHP 进程中 space 最大速度。
为了增加 OpCache 的使用速度,您可以做的另一件事是阻止它检查缓存文件的修改 - 这可以通过设置 opcache.validate_timestamps = false
关闭。如果文件被更改,那么您将不得不重新启动 PHP 服务器(php-fpm,或者如果您使用的是 Apache mod_php),否则会使 OpCache 缓存无效。
--classmap-authoritative隐式启用--optimize。所以,这样的命令就够了composer dump-autoload --no-dev --classmap-authoritative
。但是使用 --classmap-authoritative 你可以获得 class not found
异常。如果你安装了 APCu,你可以使用 composer dump-autoload --no-dev --optimize --apcu
.
阅读 Symfony2 性能文档:http://symfony.com/doc/2.8/performance.html
我正在尝试找出哪种解决方案更适合缓存 class 名称路径。我正在使用 PHP7,所以 APC 不可用,只有 apcu 和 opcache。鉴于我对实施缓存或必须重新启动 Web 服务器的复杂性没有任何问题,哪个是最高性能的?此外,如果我确实使用 APC 自动加载器,app.php 代码仍然必须首先加载作曲家 autoload.php,创建 ApcClassLoader,然后注销初始自动加载器。清除 class 地图是否有意义,这样未使用的地图就不会浪费太多内存,即 运行: composer dump-autoload --no-dev
?
用于设置自动加载的 'gold standard' 在生产环境中 正如 symfony 文档所说:composer dump-autoload --optimize --no-dev --classmap-authoritative
。
- --optimize 转储应用程序中使用的所有 PSR-0 和 PSR-4 兼容 class。
- --no-dev 排除仅在开发环境(例如测试)中需要的class。
- --classmap-authoritative 防止 Composer 扫描文件系统以查找在 class 中找不到的 classes地图。
在开发中,这样的优化可能太多了,因为您编写的每个新 class 都至少需要一个 composer dump-autoload
- 灵活性更有用。
一旦 classmap 被写入光盘一次,然后读回,它无论如何都可以通过 OpCache 获得,因此它实际上已经在 PHP 进程中 space 最大速度。
为了增加 OpCache 的使用速度,您可以做的另一件事是阻止它检查缓存文件的修改 - 这可以通过设置 opcache.validate_timestamps = false
关闭。如果文件被更改,那么您将不得不重新启动 PHP 服务器(php-fpm,或者如果您使用的是 Apache mod_php),否则会使 OpCache 缓存无效。
--classmap-authoritative隐式启用--optimize。所以,这样的命令就够了composer dump-autoload --no-dev --classmap-authoritative
。但是使用 --classmap-authoritative 你可以获得 class not found
异常。如果你安装了 APCu,你可以使用 composer dump-autoload --no-dev --optimize --apcu
.