Browscap.ini PHP启动延迟

时间:2015-08-11 22:10:52

标签: php browscap

我发现启用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启动时间的巨大差异呢?

1 个答案:

答案 0 :(得分:0)

PHP在启动时加载其整个配置(包括browscap.ini),每次调用php时都会在CLI中加载。如果你不在你的剧本中打电话给get_browser()并不重要,如果你给php根本没有解释脚本,那就无所谓了;如果配置文件这样说,那么无论如何都会加载browscap。启动时间差异明显的原因是因为典型的browscap.ini通常比较大。

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

  • 没有browscap: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