【问题标题】:PHP APC failing in unit testsPHP APC 在单元测试中失败
【发布时间】:2010-09-19 01:34:12
【问题描述】:

我们在应用程序中使用 APC 用户缓存,但我已经开始注意到我们的单元测试中与 APC 测试特别相关的各种问题。

似乎最终 APC 开始无法存储和检索结果;虽然大多数测试继续正确运行(因为如果没有从缓存中恢复,它们只是重建数据),专门测试缓存的测试在它们应该失败时被清空或重新填充,这有点烦人。如果它们单独运行,而不是作为整个测试套件的一部分运行,则相同的测试运行良好)。

问题

  • 有没有其他人遇到过类似的问题?除了 slam_defence 设置破坏单元测试的问题(这似乎不是我的问题,因为它没有为我显示任何错误消息)之外,我似乎无法通过谷歌找到太多相关信息。
  • 有谁知道如何从 APC 中获取更多调试信息?我通过检查 apc_store() 的返回码并将额外的成功参数传递给 apc_fetch() 来检测失败,但我从中得到的只是布尔成功/失败状态;没有我可以跟进的细节。

【问题讨论】:

    标签: php apc


    【解决方案1】:

    我的猜测是缓存可能已满。在您的应用程序中,这是您应该能够处理的事情(永远不要假设这些项目存在于缓存中)。我不知道 APC 是如何缓存或过期的东西,所以奇怪的是没有保留“后来的东西”。

    对于您的单元测试,是否会为每个测试工作调用 apc_clear_cache('user') ?

    【讨论】:

    • 这是个好主意,但为了确保每个测试的状态相同,我们已经在每个测试的 setUp 调用中调用了 apc_clear_cache('user')。
    • 如果这是真的,那么我会看看我是否可以得到一个简短的脚本来持续触发问题并报告错误。
    • 实际上,事实证明您或多或少是正确的。尽管我们尝试清空缓存,但由于缓存已满,因此出现问题。调用 apc_clear_cache 无法释放内存;即使在每个项目上调用 apc_delete 也无法释放内存。对此有何想法?
    • 真的不知道,对不起.. 创建一个可重现的脚本并写一个错误报告。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2016-02-22
    • 2018-11-25
    • 2021-05-03
    相关资源
    最近更新 更多