APC 密钥超时是否在单个请求中起作用?

发布于 2024-11-30 06:55:51 字数 600 浏览 0 评论 0原文

这是我的 PHPUnit 测试函数代码的主体:

$key = 'test:foobar';
$valueIn = 'this is a test string';
$success = apc_store( $key, $valueIn, 1 ); // 1 second expire time
$this->assertTrue( $success );
$valueOut = apc_fetch( $key );
$this->assertEquals( $valueIn, $valueOut );
sleep(2); // wait 2 seconds
$valueOut = apc_fetch( $key );
$this->assertEquals( false, $valueOut ); // <<< This assert fails!

我的问题是,为什么最后一次获取时 $valueOut == $valueIn ?密钥不应该过期并返回 false 吗?我也尝试过等待10秒,但没有成功。

我使用 apc.php 来检查缓存,密钥就在其中,并有 1 秒过期时间。当我检查该键时,该值为 false,这符合预期。我正在使用 APC 3.1.7

Here's the body of my PHPUnit test function code:

$key = 'test:foobar';
$valueIn = 'this is a test string';
$success = apc_store( $key, $valueIn, 1 ); // 1 second expire time
$this->assertTrue( $success );
$valueOut = apc_fetch( $key );
$this->assertEquals( $valueIn, $valueOut );
sleep(2); // wait 2 seconds
$valueOut = apc_fetch( $key );
$this->assertEquals( false, $valueOut ); // <<< This assert fails!

My question is, why is $valueOut == $valueIn on the last fetch? Shouldn't the key expire and return false? I've also tried waiting 10 seconds and it doesn't work.

I've used apc.php to examine the cache, and the key is in there with a 1-second expire. When I examine the key, the value is false, which is as expected. I'm using APC 3.1.7

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

維他命╮ 2024-12-07 06:55:52

不,变量不会在单个请求内过期。

apc_store 的 PHP 文档具有以下内容说说ttl(生存时间)参数(强调我的):

ttl 通过后,存储的变量将从缓存中删除(在下一个请求时)。

No, variables are not expired within a single request.

The PHP documentation for apc_store has the following to say about the ttl (time to live) argument (emphasis mine):

After the ttl has passed, the stored variable will be expunged from the cache (on the next request).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文