0

我从来没有真正考虑过这么多,但很好奇当我做一个 php include(或要求)时到底发生了什么。

我一直认为,当加载 php 页面时,它不会实际包含文件(并命中磁盘),而是会检查内存缓存中的 PHP 编译代码(即 APC)。

但后来我在想,PHP 如何知道文件何时更改(并因此重新编译)?它不需要在加载时检查磁盘吗?这就是为什么(根据APC、磁盘命中和 requires/includes)包括相对文件名比绝对文件名更糟糕的原因,因为它必须检查其当前目录的绝对路径(如果有两个同名文件?)如果所以,这听起来像在一些非常大的框架上会有很多磁盘命中检查文件是否已更改。

或者这是否意味着如果 APC 已打开,您是否必须在启动时手动清除缓存?

4

1 回答 1

1

查看文档apc.stat

http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat

这默认为 on,强制 APC 在每个请求上统计(检查)脚本以确定它是否已被修改。如果它已被修改,它将重新编译并缓存新版本。如果此设置关闭,APC 将不检查,这通常意味着要强制 APC 重新检查文件,必须重新启动 Web 服务器或手动清除缓存。

于 2013-10-31T18:37:48.487 回答