PHP 是否从我用 opcache.opcache_compile_file() 编译的文件中的包含执行文件?
Does PHP execute files from an include in a file I compile with opcache.opcache_compile_file()?
opcache.opcache_compile_file
的 [PHP 文档说:
This function compiles a PHP script and adds it to the opcode cache
without executing it.
如果我使用 opcache_compile_file()
编译一个文件,并且该文件包含其他文件(通过 include()
、require()
等),包含的文件会被执行吗?或者将包含的文件编译并添加到 opcache?
编辑
从评论中提出的观点来看,包含的文件是否也添加到缓存中?还是 opcache_compile_file()
只是忽略包含(也许是最佳行为)?
有同样的问题,我用 googleize 并通过在 xampp 中与 Whosebug fellows
打开 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 在我的例子中
我得到的结果是
1是的
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%更快的速度。
opcache.opcache_compile_file
的 [PHP 文档说:
This function compiles a PHP script and adds it to the opcode cache without executing it.
如果我使用 opcache_compile_file()
编译一个文件,并且该文件包含其他文件(通过 include()
、require()
等),包含的文件会被执行吗?或者将包含的文件编译并添加到 opcache?
编辑
从评论中提出的观点来看,包含的文件是否也添加到缓存中?还是 opcache_compile_file()
只是忽略包含(也许是最佳行为)?
有同样的问题,我用 googleize 并通过在 xampp 中与 Whosebug fellows
打开 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 在我的例子中
我得到的结果是 1是的
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%更快的速度。