APC值随机消失

2023-12-04

我使用 APC 来存储类名到类文件路径的映射。我在自动加载函数中像这样构建地图:

$class_paths = apc_fetch('class_paths');

// If the class path is stored in application cache - search finished.

if (isset($class_paths[$class])) {
    return require_once $class_paths[$class];

// Otherwise search in known places

} else {

    // List of places to look for class

    $paths = array(
        '/src/',
        '/modules/',
        '/libs/',
    );

    // Search directories and store path in cache if found.

    foreach ($paths as $path) {
        $file = DOC_ROOT . $path . $class . '.php';
        if (file_exists($file)) {
            echo 'File was found in => ' . $file . '<br />';

            $class_paths[$class] = $file;
            apc_store('class_paths', $class_paths);
            return require_once $file;
        }
    }   
}

我可以看到随着越来越多的类被加载,它们被添加到地图中,但在某些时候apc_fetch回报NULL在页面请求中间,而不是返回地图。

Getting => class_paths
Array
(
    [MCS\CMS\Helper\LayoutHelper] => /Users/mbl/Documents/Projects/mcs_ibob/core/trunk/src/MCS/CMS/Helper/LayoutHelper.php
    [MCS\CMS\Model\Spot] => /Users/mbl/Documents/Projects/mcs_ibob/core/trunk/src/MCS/CMS/Model/Spot.php
)
Getting => class_paths
{null}

很多时候,缓存的值也会在页面请求之间消失。

这可能是什么原因?

我使用 APC 作为运行 PHP 5.3 的扩展 (PECL)。

UPDATE:在下面的评论中,您会看到有人说 APC 不是持久的并且不值得信任。但在我的例子中,代码在 15-50 毫秒之间的一页请求中执行。我不应该能够trustAPC 这么久?

UPDATE:缓存似乎包含多个具有相同键的条目,而它应该只包含一个 - 调用时会覆盖该值apc_store()。我希望这可以帮助某人理解这个问题。 (我已经禁用了猛击防御和写锁)

Array
(
    [num_slots] => 4099
    [ttl] => 0
    [num_hits] => 0
    [num_misses] => 3
    [num_inserts] => 9678
    [expunges] => 0
    [start_time] => 1293109072
    [mem_size] => 40064
    [num_entries] => 8
    [file_upload_progress] => 1
    [memory_type] => mmap
    [locking_type] => file
    [cache_list] => Array
        (
            [0] => Array
                (
                    [info] => fSchema::mysql::fORM::default::/Users/mbl/Documents/Projects/mcs_ibob/core/trunk/public_html/::::column_info
                    [ttl] => 0
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 12456
                )

            [1] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [2] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [3] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [4] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [5] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [6] => Array
                (
                    [info] => mcs:odk:class_paths
                    [ttl] => 3600
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 648
                )

            [7] => Array
                (
                    [info] => fSchema::mysql::fORM::default::/Users/mbl/Documents/Projects/mcs_ibob/core/trunk/public_html/::::merged_column_info
                    [ttl] => 0
                    [type] => user
                    [num_hits] => 0
                    [mtime] => 1293109072
                    [creation_time] => 1293109072
                    [deletion_time] => 0
                    [access_time] => 1293109072
                    [ref_count] => 0
                    [mem_size] => 23720
                )

        )

    [deleted_list] => Array
        (
        )

)

它不是持久存储。 您可以通过增加 APC 的内存大小来改进它,但无论如何,没有任何保证。 因此,如果您发现值被删除,您应该重新初始化它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

APC值随机消失 的相关文章

  • 将布尔值转换为整数值php

    PHP 是否有任何内置函数可以接受布尔值并返回其等效整数 0 代表假 1 代表真 当然 您可以轻松创建一个函数来执行此操作 我只是问 PHP 内部是否有内置函数 我已经尝试过了intval 并将其投射到 int 但它们不起作用 在 TRUE
  • Laravel /broadcasting/auth 总是失败并出现 403 错误

    我最近深入研究了 Laravel 5 3 的 Laravel Echo 和 Pusher 组合 我已成功建立公共频道并转向私人频道 我在 Laravel 从 broadcasting auth 路由返回 403 时遇到了麻烦 无论我做什么来
  • 有没有一种简单的方法来获取 PHP 中实例化类的文件?

    我想复制这个 myObject new object FILE class object protected path to caller public function construct file this gt path to cal
  • Swift上传文件到PHP服务器

    因此 我将文件从 swift 上传到 PHP 服务器 POST 请求按预期到达 带有标头和所有内容 但我无法从中获取任何内容 FILES 它只是一个空数组 我显然在 Swift 方面做错了什么 这是我的代码 func testUpload
  • WordPress 固定链接永远不会在本地主机 Ubuntu 12.10 上工作

    除默认设置外 Wordpress 永久链接不起作用 如何启用此重写 我试过了 sudo a2enmod rewrite sudo service apache2 restart 永久链接保存到 localhost wordpress 中的
  • PHP 难以检查数组中的元素是否为整数类型

    我正在尝试检测一个或多个变量是否包含数字 我尝试了几种不同的方法 但并没有完全成功 这是我尝试过的
  • PHP 简化三元运算

    在 PHP 中 有没有一种方法可以进一步简化 而不使用if foo bar 0 foo 我想知道是否有办法不重新分配 foo如果条件满足 则返回到自身 我知道有一种方法可以在 Javascript 中做到这一点 使用 对吧 但我想知道是否有
  • yii::app()->user->setState 在 yii 中?

    我想知道 yii 中的这个 Yii app gt user gt setState key value 如果我有一个大小为 10 的数组 并且我将该数组设置为如下状态 Yii app gt user gt setState data dat
  • 在通过 AJAX 响应发送的页面上执行 javascript 函数

    我想执行一个从服务器通过 AJAX 请求发送的函数 函数体不在调用页面中 例如 完整代码如下 1 调用PHP脚本
  • CakePHP 控制器的实际测试?

    我正在使用 SimpleTest 1 0 1 用 CakePHP 刚刚发布的 1 2 4 编写一个新应用程序 我已经阅读了相关章节Cookbook http book cakephp org view 366 Testing control
  • ios-使用 firebase 发送通知

    我正在尝试创建带有通知的应用程序 通知必须从 php 文件发送到 firebase 然后发送到设备 起初 我尝试使用 firebase 控制台发送 效果完美 但是当我尝试使用 php 发送通知时 我遇到了问题 显示已成功发送 但我没有收到任
  • PHP PDF生成问题

    我使用 FPDF 在 PHP 中创建 pdf 我使用会话变量将变量在一种表单之间传递到另一种表单 当我提供一个值时 Report php
  • php洗一副牌

    我想使用 php 创建随机桥手的集合 我认为我可以将有序的卡片包编码为字符串 deal下面 我喜欢它有 52 个字母 同时考虑大小写 我发现了 php 函数str shuffle 所以我想我可以做以下事情 pack abcdefghijkl
  • 如何显示浏览器中发出的 API 请求的 symfony 分析器?

    我正在使用 Symfony2 FOSRest 捆绑包开发 REST api 我想知道是否有任何方法可以在开发模式下调用api app dev php 从浏览器 对应于Accept text html application xhtml xm
  • PHP 和 MySQLi 中没有选择数据库错误[重复]

    这个问题在这里已经有答案了 我必须从 MySQL 数据库中选择数据 我一直在寻找答案 但仍然没有找到 我正在学习W3School http www w3schools com php php mysql select asp 我的 MySQ
  • 使用 MongoDB PHP 驱动程序时的安全问题

    我有在 MYSQL 上保护 sql 注入的经验 但是在使用 php 驱动程序的 MongoDB 上我应该注意什么 在大多数页面中 我通过 GET POST 和搜索 插入系统获取数据 我通过 UDID 其他字段进行搜索 并且可以插入任何字符串
  • CodeIgniter form_validation->run() 总是返回 false?

    我是新来的CodeIgniter我一直在尝试实现表单提交功能 但是每当我按 提交 时 表单页面只会刷新并且数据库不会更新 看来 this gt form validation gt run 总是返回 false 但我不知道为什么 The 控
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if
  • 如何正确转义 CSV 中的双引号?

    我的 CSV 中有这样一行 Samsung U600 24 10000003409 1 10000003427 旁边引用24用于表示英寸 而该引号旁边的引号则关闭该字段 我正在读这行fgetcsv但解析器犯了一个错误 并将该值读取为 Sam
  • symfony2 选择单选框的默认值

    我的项目是使用 Silex 和 Symfony 组件 即表单组件 编写的 我尝试创建一组从类中构建的单选按钮 并且我想预先选择其中一个单选按钮 我创建这样的表格 form app form factory gt createBuilder

随机推荐

  • Python - 使用正则表达式查找多个匹配项并将其打印出来[重复]

    这个问题在这里已经有答案了 我需要从 HTML 源文件中查找表单内容 我做了一些搜索并找到了很好的方法来做到这一点 但问题是它只打印第一个找到的内容 我如何循环遍历它并输出所有表单内容 而不是只是第一个 line bla bla bla
  • Firestore - 监听特定字段的变化?

    如何使用 firestore js sdk 监听特定字段的变化 在文档中 他们似乎只展示了如何监听整个文档 如果任何 SF 字段发生变化 就会触发回调 db collection cities doc SF onSnapshot funct
  • 使用反向引用和哈希时的 Ruby gsub 问题

    以下代码定义带有正则表达式 键 和替换 值 的哈希 然后它迭代哈希并相应地替换字符串 简单的字符串替换效果很好 但是当我需要在替换之前计算结果时 几年到几天的情况发生变化 它就不行了 预先定义哈希值是关键 我缺少什么 任何帮助将不胜感激 a
  • 通过 OLE 从 Ruby 或 VBS 调用时,Word Document.SaveAs 会忽略编码

    我有一个脚本 VBS 或 Ruby 可以将 Word 文档保存为 过滤后的 HTML 但编码参数被忽略 HTML 文件始终以 Windows 1252 进行编码 我在 Windows 7 SP1 上使用 Word 2007 SP3 红宝石示
  • 如何使用 jQuery 悬停、更改、切换图片

    我正在做我的项目 我正在努力做到这一点 我想让每个图像的点击都能正常工作 这样每个图像都有自己的纸张 需要它悬停 我想使用切换百叶窗效果 我读到 在这方面使用 CSS 背景是明智的 这样我可以交换图片 但我无法理解它 我已经采取了一些代码来
  • Java 8 Firebase Tasks.await()

    我在 Spring Boot 应用程序中使用 Firebase JAVA sdk 尝试验证 firebase 令牌 映射 resp new HashMap Task
  • 使用 dplyr 计算组平均值,同时排除当前观察值

    Using dplyr 最好 我试图计算每个观察值的组平均值 同时从组中排除该观察值 看来这应该可以通过组合来实现rowwise and group by 但这两个功能不能同时使用 给定这个数据框 df lt data frame grou
  • Rust 正则表达式模式 - 无法识别的转义模式

    我确实有以下字符串 lengthSeconds 2664 我想与这个正则表达式匹配 Regex new lengthSeconds d 我什至尝试过这个 Regex new r lengthSeconds d 但我得到这个 regex pa
  • SWT 全局 KeyListener 按钮焦点问题

    对于我的应用程序 我需要空格键来调用独立于焦点小部件的函数 在应用程序中的任何位置 但前提是打开相应的选项卡 我发现可以在显示中添加一个过滤器 如下所示 getShell getDisplay addFilter SWT KeyDown n
  • 如何将带有空格的路径存储到bash中的变量中

    我想存储 c users me dir name到一个变量中将其传递给cd系统调用 键入时有效 cd c users me dir name or cd c users me dir name 但如果我存储它则不起作用 dirname c
  • 延迟加载 FXProperties

    这是来自的后续here 我正在实现一个表 它将数据异步加载到表单元格中 问题是 表格单元格有时无法正确更新 有时它会以某种方式 挂起 并且永远显示 正在加载 仅当我在表格中滚动一点时 实际值才会更新 重现 运行应用程序并在表中快速向下滚动
  • Javascript:显示大数字时如何避免科学记数法

    基于 为了可读性 JavaScript使用科学记数法来显示非常大的数字 大于或等于1021的绝对值 例如 写入语句 document write 1000000000000000000000000 会产生输出 1e24 我可以避免显示科学记
  • 如何使用text strip()函数?

    我可以删除数字 但不能删除字母字符 gt gt gt text 132abcd13232111 gt gt gt text strip 123 abcd 为什么以下不起作用 gt gt gt text strip abcd 132abcd1
  • PDFBox - 直线/矩形提取

    我正在尝试从 PDF 中提取文本坐标和行 或矩形 坐标 The TextPosition班级有getXDirAdj and getYDirAdj 根据相应 TextPosition 对象表示的文本片段的方向转换坐标的方法 根据 mkl 的评
  • 使用和不使用 pytest-mock 来模拟标准库函数

    出于测试目的 我想模拟 Shutil which Python 3 5 1 它在简化方法 find foo 中调用 def find foo self gt Path foo exe which foo path None if foo e
  • 在python中循环遍历json数组

    我在一个数组中有 JSON 我正在将其导入到我的脚本中 ip address 192 168 0 1 192 168 0 2 192 168 0 3 我正在加载 JSON 并声明一个名为 ip address 的变量 data yaml l
  • 获取每天的总浏览次数,包括没有记录的一天留下“0 浏览次数”

    我正在创建一个图表 我可以在其中获得特定范围内每天的总观看次数 或者只要它可以返回 我遇到的问题是填写默认数量0当某一天没有浏览量时 有些日子可能一天中绝对没有浏览量 所以我需要MySQL返回默认值0当没有找到时 我不知道该怎么做 这是我用
  • 如何替换视图控制器(或从导航堆栈中删除)而不是推送segue?

    I have 一个小的 iPhone 应用程序 它使用导航控制器显示 3 个视图 此处全屏 首先 它显示社交网络列表 Facebook Google 等 然后它会显示一个 OAuth 对话框 要求提供凭据 并且 之后 在同样的UIWebVi
  • Angular HttpClient 错误处理困难

    有关新 HttpClient 的 Angular 文档https angular io guide http有一个 获取错误详细信息 部分 其中显示了如下所示的示例 我已修改评论以记录我的观察结果 哪些基本错误类最终出现在哪里 http g
  • APC值随机消失

    我使用 APC 来存储类名到类文件路径的映射 我在自动加载函数中像这样构建地图 class paths apc fetch class paths If the class path is stored in application cac