[opcache.opcache_compile_file
的PHP文档说:
此函数编译一个PHP脚本并将其添加到操作码缓存中 而不执行它。
如果我使用opcache_compile_file()
编译文件,并且该文件包含其他文件(通过include()
,require()
等),是否将执行其中包含的文件?还是仅将包含的文件编译并添加到操作缓存中?
编辑
从注释中提出的观点来看,包含的文件是否也添加到缓存中?还是opcache_compile_file()
只是忽略包含(也许是最佳行为)?
答案 0 :(得分:1)
有同样的问题,我用谷歌搜索并通过与stackoverflow伙伴一起打开xampp中的opcache获得了一些结果
所以我做了成功的愚蠢测试..
在php.ini中,我把这些
[opcache]
zend_extension=C:\xampp\php\ext\php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
所以在htdocs \ stupidtest * index.php *中,我这样写:
<?php
opcache_compile_file('test.php');
test();
在我放入的 test.php 中
<?php
function test(){
echo 'yep';
}
和另一个名为 the_answer_i_need.php
的文件<?php
include('test.php');
print_r(opcache_is_script_cached('test.php'));
test();
?>
现在让我们玩游戏: 首先运行index.php http://localhost/test/index.php就我而言
然后我运行the_answer_i_need.php http://localhost/test/the_answer_i_need.php就我而言
我得到的结果是 1yep
1 means boolean true
'yep' means the function called are included from cache cause the previous result was **true**
*job done,we're good*
我写了自2002年以来最快的php框架,这个技巧将使我能够将框架核心的某些部分切换为php之后的第二个预处理程序,并提高大约40%的速度。