这个问题与 PHP 引擎的内部机制有关。我问它是为了理解文件包含过程。
比如说,您有一个包含在所有 php 脚本中的 20,000 行包含文件(类似于“functions_library.php”)。
每次您的一个 php 脚本加载该文件时,PHP 是否会检查/验证该包含文件在语法上是否正确?这个过程是否会在每次页面加载时一遍又一遍地发生?
或者...
PHP 会注意文件的最后修改日期吗?如果事实证明自上次检查以来没有对其进行任何更改,它是否只是忽略了检查?
这个问题与 PHP 引擎的内部机制有关。我问它是为了理解文件包含过程。
比如说,您有一个包含在所有 php 脚本中的 20,000 行包含文件(类似于“functions_library.php”)。
每次您的一个 php 脚本加载该文件时,PHP 是否会检查/验证该包含文件在语法上是否正确?这个过程是否会在每次页面加载时一遍又一遍地发生?
或者...
PHP 会注意文件的最后修改日期吗?如果事实证明自上次检查以来没有对其进行任何更改,它是否只是忽略了检查?
如果包含该文件,PHP每次都需要解释它。
每次调用 .php 时,PHP 都会重新解释文件include()
。
这可以使用变量进行视觉测试。如果你有这样的事情:
otherScript.php:
<?php echo $foo; ?>
script.php:
<?php
$foo = 1;
include("otherScript.php");
$foo = 2;
include("otherScript.php");
?>
输出将是:
12
这是一个糟糕的例子,但它应该证明 PHP 每次都需要包含文件的内容。声明 PHP 解释器不会为每个引用在内存中保留包含文件的副本是一个很好的猜测——每个应用程序可能有数百个包含。
然而,为了处理这个特定的理想,他们提供了一种方法include_once()
,顾名思义,该方法只包含一次文件并防止它被包含任何其他时间。