我想知道是否可以在memcached中存储函数变量。我编写了基本的模板系统,它将xml模板编译成函数。模板可以变得非常大,我想如果我可以缓存它,我可以获得性能提升。这样的工作会起作用,还是我只是缓存对函数的引用?
$populate_template = function($values){
//compiled template
};
$memcached_object->set("some_key",$populated_template);
编辑:我确实知道有php accelerators完全符合我的要求,但是能够使用memcached会更容易,因为我不需要经历另一个过程技术批准。
答案 0 :(得分:3)
我不这么认为。当然,我看了序列化它。但是:
PHP Warning: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in php shell code:1
使用memcached,您可以做的就是将代码存储为字符串,然后在拔出后调用create_function
。
答案 1 :(得分:1)
我不认为将函数源代码“序列化”为字符串并通过create_function重新创建它会带来性能提升。它比用PHP定义函数要慢百倍,因为输入/输出使用外部介质+执行PHP在任何一种情况下都需要做的事情。
您需要使用操作码缓存。但如果PHP性能是您应用程序中唯一的持久瓶颈,那么您就是一个快乐的人。