如果在循环中包含PHP中的文件,它每次在循环中运行时都会访问该文件吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果在循环中包含PHP中的文件,它每次在循环中运行时都会访问该文件吗?相关的知识,希望对你有一定的参考价值。

如果你有这个

for($i = 0; $i < 10; $i++) include('whatever.php');

它会将文件拉出十次实际时间,还是仅仅访问文件一次,并保留其内容并简单地评估其他9次?

答案

它将包含该文件十次。

如果这是一个问题,你可以使用include_once

另一答案

简单到足以检查 - 在那里放一个sleep(),让文件做一些输出,并在其中一个睡眠期间,修改文件以更改其输出。

whatever.php:

<?php 

echo 'hello from version 1.0';
sleep(10);

然后在其中一个睡眠期间,使用另一个shell将其更改为“2.0版”。如果输出没有改变,那么PHP已经加载了文件ONCE并缓存了它 - 你仍然会获得10个文件输出/效果的副本,但你会知道PHP没有击中磁盘10次。

另一答案

如果您要询问该文件是否将被兑换并从内存中包含而不是一次又一次地解析和编译为PHP字节码: - 是的,如果您将该给定文件包括n次,则将处理相同的文件n次。这是标准的PHP行为,但......

你可以改变它(在我看来你正在寻找那个?)。正如我所说,PHP将首次包含该文件,不会为您缓存...除非您使用任何PHP缓存模块,如APC:

使用APC时,情况会有所不同,输出结果会相同,但服务器行为会发生很大变化!第一次包含文件时,它将被解析,编译成PHP字节码(机器可读指令)并存储在共享内存中。之后,除非给定的文件被修改,否则不会再次处理! PHP将直接进入程序的预编译版本并执行它,为您节省大量时间和资源!适用于高流量Web应用程序。

关于APC here的更多信息

以上是关于如果在循环中包含PHP中的文件,它每次在循环中运行时都会访问该文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

php 在WooCommerce中为CSS Grid更改循环或不浮动:这将作为主题中的单独文件包含在内。如果你这样做,b

如何使用 pin 工具跟踪二进制仪器中的特定循环?

PHP 确实改变了循环的范围并在包含的文件中切换

使用VBA循环浏览文件夹中的文件?

对于函数PHP中的循环

如何在循环中的每次迭代中保存具有不同名称的文件? MATLAB