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
我观察到在 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