当调用脚本首次启动或到达包含语句时,包含文件的代码块是否被“抓取”?举个例子:
// execute many lines of code
sleep(10);
// do file retrievals that takes many minutes
include('somefile.php');
如果原始代码被执行(开始),那么 somefile.php 的代码块是在那一刻放入内存中,还是直到到达 include 语句?
当调用脚本首次启动或到达包含语句时,包含文件的代码块是否被“抓取”?举个例子:
// execute many lines of code
sleep(10);
// do file retrievals that takes many minutes
include('somefile.php');
如果原始代码被执行(开始),那么 somefile.php 的代码块是在那一刻放入内存中,还是直到到达 include 语句?
当 include 语句被执行/运行时。
PHP 是逐行执行的。所以,当进程到达 时include
,它会发挥它的魔力。
例如:
//some code
//some more code
//even more
include('file.php');//now all of file.php's contents will sit here
//(so the file will be included at this point)
include
到达语句时包含该文件
执行
一个.php
var_dump("a",time());
// execute many lines of code
sleep(10);
// do file retrievals that takes many minutes
include('b.php');
b.php
var_dump("b",time());
输出
string 'a' (length=1)
int 1348447840
string 'b' (length=1)
int 1348447850
您可以使用以下代码对其进行测试:
<?php
echo 'Before sleep(): ' . $test . ' | ';
sleep(10);
echo 'After sleep(): ' . $test . ' | ';
include('inc_file.php');
echo 'After include(): ' . $test;
?>
假设inc_file.php有这个代码:
<?php
$test = 'Started var';
?>
输出将是:
在睡眠()之前:| 睡眠后():| 在 include() 之后:开始 var
所以我们可以说inc_file.php 的内容只有在 include() 被调用后才可用。
我没有在 PHP 文档中找到明确的解释,但 @navnav 所说的我认为是令人满意的。