2011-06-17 51 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性能是您的應用程序中唯一持久的瓶頸,那麼您是一個快樂的人。