xdg / mime
PHP 实现的 Freedesktop 共享 MIME-info 数据库标准。
1.0.4
2024-04-08 08:25 UTC
Requires
- php: >=8.1
- ext-dom: *
- ext-libxml: *
- ext-xml: *
- ju1ius/luigi: ^1.0
- symfony/filesystem: ^5.4||^6.1
- xdg/base-directory: ^1.0
Requires (Dev)
- ext-fileinfo: *
- ext-posix: *
- ext-sockets: *
- symfony/stopwatch: ^6.1
README
此包是 XDG 共享 MIME-Info 数据库规范的纯 PHP 实现,链接:[XDG Shared MIME-Info Database](http://standards.freedesktop.org/shared-mime-info-spec/ "外部链接")。
它主要针对 MIME 类型的检测。
安装
$ composer require xdg/mime
用法
实现说明
大多数 XDG 共享 MIME-Info 实现从由 update-mime-database
程序生成的二进制缓存文件中读取数据。但在 PHP 上下文中,这由于以下原因而变得不太实际:
- 首先,PHP 没有原生的
mmap
功能,因此在运行时读取这些文件会产生大量的 I/O。 - 其次,在运行时解析这些文件有不可忽视的开销。
- 最后,PHP 在服务器环境中运行,而
update-mime-database
程序通常不可用(甚至可能无法安装)。
因此,这个库采用另一种方法:以原始 XML 格式解析 MIME 数据库,并将其编译成可执行 PHP 代码。这带来了几个优点:
- 由于大多数 PHP 应用程序都有构建/部署步骤,因此解析数据库时的开销完全消除。
- 生成 PHP 代码可以利用 PHP 源代码缓存,这使得加载数据库非常快。
- 由于在构建时性能不是最重要的,库会做额外的工作来优化生成的 PHP 代码,以实现最佳运行时性能。
为了方便起见,此包附带了一个预编译的数据库,该数据库由最新版本的 shared-mime-info 数据库 构建。