我从来没有真正考虑过这么多,但很好奇当我做一个 php include
(或要求)时到底发生了什么。
我一直认为,当加载 php 页面时,它不会实际包含文件(并命中磁盘),而是会检查内存缓存中的 PHP 编译代码(即 APC)。
但后来我在想,PHP 如何知道文件何时更改(并因此重新编译)?它不需要在加载时检查磁盘吗?这就是为什么(根据APC、磁盘命中和 requires/includes)包括相对文件名比绝对文件名更糟糕的原因,因为它必须检查其当前目录的绝对路径(如果有两个同名文件?)如果所以,这听起来像在一些非常大的框架上会有很多磁盘命中检查文件是否已更改。
或者这是否意味着如果 APC 已打开,您是否必须在启动时手动清除缓存?