0

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

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

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

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

那么为什么 php 启动时间的巨大差异呢?

4

1 回答 1

0

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
于 2015-08-11T23:05:24.730 回答