我发现启用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启动时间的巨大差异呢?
答案 0 :(得分:0)
PHP在启动时加载其整个配置(包括browscap.ini),每次调用php
时都会在CLI中加载。如果你不在你的剧本中打电话给get_browser()
并不重要,如果你给php
根本没有解释脚本,那就无所谓了;如果配置文件这样说,那么无论如何都会加载browscap。启动时间差异明显的原因是因为典型的browscap.ini通常比较大。
这是我的机器使用不同大小的browscap文件和简单php -v
的一堆结果: