我们使用 APC 作为操作码缓存。有没有办法让 APC 缓存不存在的文件?我们设置了apc.stat = 0
和apc.include_once_override = 1
。include_once
为了提高调用文件系统上可能不存在的文件的性能,是否还有更多工作要做?如果它存在,显然我们想要包含它。但是,如果它不存在,它将永远不存在,我们不希望 PHPopen()
在每个请求中调用该文件进行检查。
对于某些背景:我们有一个基础站点,但会为每个客户提供对站点的定制。有些客户有自定义登录页面,有些客户有完全独特的页面,等等。
我们以一种稍微不寻常的方式使用 Zend 框架,以允许我们根据需要覆盖控制器。我们的站点可能有一个名为 的控制器LoginController
,定义在一个文件中controllers/LoginController.php
。但是,我们的客户“公司”可能需要自定义登录页面,因此我们将编写一个名为Company_LoginController
defined in a directory的新类controllers/company/LoginController.php
。(这种命名约定使我们能够与 Zend Framework 的“模块”概念保持一致。)
当我们处理类时,我们基本上会做这样的事情:
include_once APPLICATION_PATH . '/controllers/company/LoginController.php';
if (class_exists("Company_LoginController")) {
echo 'customer-specific controller exists';
} else {
include_once APPLICATION_PATH . '/controllers/LoginController.php';
echo 'customer-specific controller does not exist; using default';
}
如果文件/controllers/company/LoginController.php
存在,APC 将在第一次请求时缓存它,并且不再从文件系统中获取它。但是,如果该文件/controllers/company/LoginController.php
不存在,我不希望 APC 多次检查该文件是否存在。有什么办法可以做到这一点?