code711/speedupyaml

此扩展为 TYPO3\CMS\Core\Configuration\Loader\YamlFileLoader 提供了一个 XCLASS,以便在可用的情况下使用 PECL 扩展 YAML 而不是 Symfonies 的 Yaml::parse。此扩展是实验性的,是一个概念验证。它可能在生产环境中也能工作。

安装: 149

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:typo3-cms-extension

dev-main 2024-06-26 15:19 UTC

This package is auto-updated.

Last update: 2024-09-26 15:50:13 UTC


README

Latest Stable Version TYPO3 12 TYPO3 11 TYPO3 10 Total Downloads Monthly Downloads

此扩展是一个概念验证,但也应该在生产环境中工作。

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 类在与此案例相关的重要方面没有变化。