Browscap.ini PHP 启动延迟

Browscap.ini PHP startup delay

我观察到在 php-cli.ini 文件中启用 browscap.ini 条目会增加 php

的启动时间
[browscap]
browscap = /etc/browscap.ini

time php -r 'echo "Hello\n";'
Hello

real    0m1.709s
user    0m1.358s
sys 0m0.348s

****VS 下面的****

[browscap]
;browscap = /etc/browscap.ini

time php -r 'echo "Hello\n";'
Hello

real    0m0.041s
user    0m0.029s
sys 0m0.011s

现在我知道 php 在调用像 get_browser() 这样的函数时会查找 browscap.ini 文件。如果使用这样的功能,我可以理解延迟。

我认为 php 不会在每次启动时将 browscap.ini(可能很大)数据加载到内存中。但是为什么 php 启动有这么大的延迟?

也许它会在每次启动或其他验证时尝试检查 browscap.ini 文件是否存在?在 php 文档中找不到任何内容。

那么,为什么 php 启动时间存在巨大差异?

PHP 在启动时加载其整个配置(包括 browscap.ini),这在 CLI 中是每次调用 php 时。如果您不在脚本中调用 get_browser() 也没关系,如果您根本不给 php 任何脚本来解释也没关系;如果配置文件这样说,browscap 无论如何都会被加载。启动时间差异明显的原因是典型的 browscap.ini 通常相对较大。

这是我的机器使用不同大小的 browscap 文件和简单 php -v:

的一堆结果
  • 无浏览器:0m0.030s
  • lite_php_browscap.ini (222 KB): 0m0.040s
  • php_browscap.ini (16,301 KB): 0m0.640s
  • full_php_browscap.ini (33,714 KB): 0m1.290s