PHP 中的缓存函数结果
我正在制作一个简单的工具来缓存函数结果
它看起来像:(
global $function_results;
$function_results = array();
function getMembers($conditions, $default = array('order' => 'name', array('abc', 'def'))){
//****Help need from here******
//make unique id from parameters value and function name
//ex: $uid;
//****to here******
global $function_results;
if(isset($function_results[$uid])) return $function_results[$uid];
else{
//do function logic...
}
}
函数及其参数只是一个示例)
有什么建议吗?
I'm making a simple tool to cache function results
It look like:
global $function_results;
$function_results = array();
function getMembers($conditions, $default = array('order' => 'name', array('abc', 'def'))){
//****Help need from here******
//make unique id from parameters value and function name
//ex: $uid;
//****to here******
global $function_results;
if(isset($function_results[$uid])) return $function_results[$uid];
else{
//do function logic...
}
}
(the function and its parameters are just an example)
Any suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这是您缺少的代码:
供您参考: http://php.net /manual/en/function.func-get-args.php
Here is your missing code:
For your reference: http://php.net/manual/en/function.func-get-args.php
这是一个与 PHP 5.2.x 兼容的通用记忆化解决方案。
call_memoized 函数:
不要直接使用 call_memoized,而是使用提供的 memoize 函数,该函数返回给定函数的新版本,该函数将自动缓存相同参数组合的结果。
请参阅下面的示例。
享受!
示例:
Here is a generic memoization solution that is compatible with PHP 5.2.x.
The call_memoized function:
Instead of using call_memoized directly, use the provided memoize function, which returns a new version of the given function that will automatically cache results from the same combination of parameters.
See example below.
Enjoy!
Example:
我想
$conditions
是一些值的数组,并且您想为该数组的每个变体创建唯一标识符?有几种方法可以做到这一点,例如:I suppose
$conditions
is an array of some values and you want to create a unique identifier for each variant of that array? There is several ways to do that, eg.:查看 memoized 函数实现 Nspl:
或者,如果您在服务器请求之间寻找缓存函数结果,则可以使用 Cachalot:
支持不同的后端:Apc、Xcache、Memcached、Redis、Couchbase。
Have a look at memoized function implementation from Nspl:
Or if you looking for caching function results between server requests you can use Cachalot:
Different back-ends are supported: Apc, Xcache, Memcached, Redis, Couchbase.