【发布时间】:2014-06-18 19:03:00
【问题描述】:
我有以下功能:
function f($idx, $arr) {
static $a;
if ($a == NULL) {
foreach ($arr as $v) {
$key = $v['key'];
if (!isset($a[$key])) {
$a[$key] = array();
}
$a[$key][] = $v;
}
}
return $a[$idx];
}
初始条件为:
- 函数
f()在 1 个请求中被多次调用 -
$arr总是很大 -
$arr在不同的函数调用中可能会有所不同(低基数) -
$idx几乎在每个函数调用中都不同(高基数)
现在我需要知道,如果$arr 已经被缓存,如果没有,则创建这个“缓存版本”,但还要保留所有以前的数组。
根据2.,我无法使用md5(serialize($arr)) 将其用作标识符,因此我需要另一种方法来确定这一点。您是否知道如何实现这种高性能缓存功能(假设我无法在此功能之外进行任何更改)?
【问题讨论】:
-
那么,您要查找的是
$a[$array_identifier][$idx],而不是$a[$idx]?
标签: php arrays performance caching