ksamborski / apcu-memo
0.4
2016-10-18 14:07 UTC
Requires
- php: >=7.0.0
- ext-apcu: *
This package is not auto-updated.
Last update: 2024-09-14 19:25:50 UTC
README
#apcumemo 基于参数的缓存函数结果的 PHP 库。
需求
您需要为 php >= 7.0.0 安装 acpu 扩展
安装
composer require ksamborski/apcu-memo
基本用法
功能范式教导我们,纯函数是最佳选择。它们提供两个主要特性
- 因为它们的结果仅依赖于它们的参数,所以它们很容易测试(您不需要任何模拟或存根)
- 因为它们没有副作用,所以它们很容易缓存
考虑这个例子
use APCuMemo\APCuMemo; function sumrange($a, $b) { return APCuMemo::memoize( function(...$_) use ($a, $b) { return array_reduce(range($a, $b), function ($product, $item) { return $product + $item; }, 1); }, [ 'ttl' => 5 ], "sumrange", $a, $b ); } $start = microtime(true); echo sumrange((int) $_GET['a'], (int) $_GET['b']); $elapsed = microtime(true) - $start; echo " " . ($elapsed * 1000) . " ms";
我们有一个简单的函数,它从 $a 到 $b 求整数之和。这可能需要一些时间,但当我们第一次计算它时,我们可以将其缓存。注意 'ttl' 参数。它设置为 5 秒,这意味着如果在 5 秒内没有人要求相同的范围,它将忘记结果。但每次请求缓存值都会重置 ttl。这样我们就可以在缓存中只保留最常用的值。
让我们看看它是如何工作的。对于 $a = 1 和 $b = 1831233,它将返回类似以下内容
1676708065762 283.94412994385 ms
随后的请求将返回
1676708065762 0.030040740966797 ms