我从来没有真正考虑过这个问题,但很好奇当我做一个php include
(或要求)时究竟发生了什么。
我总是假设当加载php页面时,它不是实际包含文件(并且命中磁盘),而是检查内存缓存中的PHP编译代码(即APC)。
但后来我在想, PHP如何知道文件何时发生变化(并因此重新编译)?它是否需要在加载时检查磁盘?这是为什么(根据APC, disk hits, and requires/includes)包括相对文件名比绝对更差,因为它必须检查它的绝对路径的当前目录(如果有两个同名的文件?)如果所以,这听起来像在一些非常大的框架上会有很多磁盘命中检查文件是否已经改变。
或者这是否意味着如果启用APC,您必须在启动时手动清除缓存吗?
答案 0 :(得分:1)
查看apc.stat
的文档:
http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat
默认为on,强制APC对每个脚本进行stat(检查) 请求确定它是否已被修改。如果它已被修改 它将重新编译并缓存新版本。如果此设置已关闭, APC不会检查,这通常意味着强制APC重新检查 文件,Web服务器将不得不重新启动或缓存将具有 要手动清除。