2011-06-17 68 views
2

我想知道是否可以在memcached中存储函数变量。我编写了将xml模板编译成函数的基本模板系统。模板可以变得非常大,如果我可以缓存它,我想我可以获得性能提升。会是这样的工作,或者我会缓存对函数的引用?将php函数变量存储在memcached中

$populate_template = function($values){ 
    //compiled template 
}; 
$memcached_object->set("some_key",$populated_template); 

编辑:我也知道有php accelerators是做正是我想要的,但是这将是一个更容易能够使用memcached的,因为我不会去通过获得另一个进程技术被批准。

+2

你最好把它们“缓存”在文件系统中。在这种情况下,你可以通过使用opcode cachers来获得提升。 – zerkms 2011-06-17 03:58:26

回答

3

我不这么认为。当然,我看着序列化它。但是:

PHP Warning: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in php shell code:1 

随着memcached的,你大概可以做的是将代码存储为一个字符串,然后调用create_function你拉出来之后。

+0

操作码缓存它然后 – 2011-06-17 04:03:49

1

我不认为将函数源代码“串行化”为字符串并通过create_function重新创建它并不会有性能提升。它比在PHP中定义函数要慢百倍,因为使用外部媒体的输入/输出+做PHP在任何情况下都需要做的事情。

你需要去操作码缓存。但是,如果PHP性能是您的应用程序中唯一持久的瓶颈,那么您是一个快乐的人。