xdg/mime

PHP 实现的 Freedesktop 共享 MIME-info 数据库标准。

1.0.4 2024-04-08 08:25 UTC

This package is auto-updated.

Last update: 2024-09-17 01:41:52 UTC


README

codecov

此包是 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 数据库 构建。