php - APC 中的操作码缓存和丢失的文件

标签 php apc

我们使用 APC 作为操作码缓存。有没有办法让 APC 缓存不存在的文件?我们设置了 apc.stat = 0apc.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/

相关文章:

使用 APC 进行 PHP 缓存

php - ajax发布请求url

php - 为什么某些 php 函数 'return' 给定参数?

php - 严格的标准不允许简单的 php explode 语句?

php - APC 是否与 PHP 5.4 或 PHP 5.5 兼容?

php - laravel4 学说不使用 apc 缓存

php - 使用 github 和 MAMP

php - 使用mysql查询统计连续缺勤总数和百分比计算

php - MySQL 查询获取数组不起作用

php - apc.filters 按路径?