code711 / speedupyaml
此扩展为 TYPO3\CMS\Core\Configuration\Loader\YamlFileLoader 提供了一个 XCLASS,以便在可用的情况下使用 PECL 扩展 YAML 而不是 Symfonies 的 Yaml::parse。此扩展是实验性的,是一个概念验证。它可能在生产环境中也能工作。
Requires
- php: 7.4.*||8.0.*||8.1.*||8.2.*||8.3.*
- typo3/cms-core: ^10.4||^11.5||^12.4
Requires (Dev)
- friendsoftypo3/phpstan-typo3: ^0.9
- typo3/cms-backend: ^12.4
- typo3/cms-composer-installers: ^5.0
- typo3/cms-frontend: ^12.4
- typo3/cms-install: ^12.4
- typo3/cms-lowlevel: ^12.4
- typo3/cms-tstemplate: ^12.4
- typo3/coding-standards: ^0.5
- typo3/testing-framework: ^7.0
- vimeo/psalm: ^4.10
Suggests
- ext-yaml: *
This package is auto-updated.
Last update: 2024-09-26 15:50:13 UTC
README
此扩展是一个概念验证,但也应该在生产环境中工作。
TYPO3 使用 Symfony Yaml 组件 来解析 YAML 文件。这主要是在 TYPO3 核心类 TYPO3\Core\Configuration\Loader\YamlFileLoader 中完成的,使用 Symfony 的 Yaml::parse
方法。
我 - 以及其他人 - 一直以为 Yaml::parse
将会回退到 PECL Yaml 扩展,并使用 yaml_parse。
事实并非如此,并且似乎从来都不是这样。
此扩展将 XCLASS TYPO3 核心类 TYPO3\\Core\\Configuration\\Loader\\YamlFileLoader
并扩展方法 TYPO3\\Core\\Configuration\\Loader\\YamlFileLoader::loadAndParse
,使其使用 PECL yaml 扩展。
PECL yaml 扩展将随后使用用 C 语言编写的官方 YAML 解析器,使 YAML 文件的解析速度提高约 40%。
问题(?) / 限制
PECL yaml 扩展的功能集与 Symfony YAML 组件不同,后者 没有 覆盖 YAML 的全部功能集,而 PECL 扩展则做到了。这 可能 导致解析相同文件时产生不同的结果。
此外,Symfony Yaml 组件可能以不同于 PECL 扩展的方式处理边缘情况。我没有足够的例子来说明这可能是怎样的,但在我的以 TYPO3 为中心的测试中,所有结果都变成了相同的解析数组。
此 XCLASS 对 EXT:forms 不会有任何作用。Helmut Hummels 的 helhum/typo3-config-handling 做了类似的事情,但仅限于扩展的范围。我实际上是从这个扩展中获取灵感来处理 yaml_parse
可能抛出的错误情况的。
目前我不会将此扩展发布到 TER,因为这应该是在核心本身中处理的事情。
它应该在 TYPO3 10、11 和 12 上工作,因为在这段时间里,TYPO3\\Core\\Configuration\\Loader\\YamlFileLoader
类在与此案例相关的重要方面没有变化。