我们使用 APC 作为操作码缓存。有没有办法让 APC 缓存不存在的文件?我们设置了 apc.stat = 0
和 apc.include_once_override = 1
。是否还有其他方法可以提高对文件系统中可能不存在的文件调用 include_once
的性能?如果它存在,显然我们想要包含它。但是,如果它不存在,它将永远存在,我们不希望 PHP 在每次检查请求时都对文件调用 open()
。
对于某些背景:我们有一个基本站点,但会根据客户的不同提供对站点的定制。一些客户有自定义登录页面,其他客户有完全独特的页面等。
我们以一种稍微不寻常的方式使用 Zend 框架,以允许我们根据需要覆盖 Controller 。我们的网站可能有一个名为 LoginController
的 Controller ,定义在文件 controllers/LoginController.php
中。但是,我们的客户“公司”可能需要自定义登录页面,因此我们将编写一个名为 Company_LoginController
的新类,定义在目录 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 多次检查此文件是否存在。有什么办法可以做到这一点?
最佳答案
可以在公司目录下创建空文件吗?由于 APC 不会加载它们两次,因此在服务器第一次启动时“加载”一些空文件没有什么坏处。
关于php - APC 中的操作码缓存和丢失的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/854715/