如果你有这个如果您在循环中包含PHP中的文件,每次它在循环中运行时都会访问该文件?
for($ i = 0; $ i < 10; $ i ++)include('whatever.php');
它会将文件拉出10次实际时间,还是只访问一次文件,并保留其内容并简单评估其他9次?
如果你有这个如果您在循环中包含PHP中的文件,每次它在循环中运行时都会访问该文件?
for($ i = 0; $ i < 10; $ i ++)include('whatever.php');
它会将文件拉出10次实际时间,还是只访问一次文件,并保留其内容并简单评估其他9次?
它将包含文件十次。
如果这是一个问题,你可以使用include_once
很简单的检查 - 放一个sleep()在那里,有一个文件做一些输出,以及睡眠周期的一个过程中,修改此文件来改变它的输出。
whatever.php:
则休眠中的一个期间,使用另一壳更改为 “版本2.0”。如果输出没有改变,那么PHP已经加载了文件ONCE并缓存了它 - 你仍然会得到10个文件输出/效果的副本,但是你会知道PHP没有在磁盘上打10次。
确定PHP中包含方法行为的好方法,谢谢:) – Macmee
如果您问是否将文件兑现并从内存中包含,而不是解析并一次又一次编译为PHP字节码: - 是的,如果包含给定文件,您将处理相同的文件n次n次。这是标准的PHP行为,但...
你可以改变这一点(在我看来,你正在寻找?)。正如我所说的,PHP将包括该文件的第一时间,除非你使用任何PHP缓存模块像APC将不缓存为你 ...:
当使用APC,事情会有所不同,输出的结果将是相同的,但服务器行为将改变很多!第一次包含一个文件时,它将被解析,编译成PHP字节码(机器可读指令)并存储在共享内存中。后来,除非给定的文件被修改,否则会再次处理NOT! PHP将直接进入程序的预编译版本并执行它,为您节省大量时间和资源!适用于高流量的Web应用程序。
更多关于APC here
如果我把include_once在for循环不会只是包括了一次,然后换另外9次展示什么? – Macmee
嗯,是的:P有时你希望它包括十次,有时你不会。 – sdleihssirhc