2

関数変数をmemcachedに保存できるかどうか疑問に思いました。xmlテンプレートを関数にコンパイルする基本的なテンプレートシステムを作成しました。テンプレートは非常に大きくなる可能性があり、キャッシュできればパフォーマンスが向上すると思います。このようなものは機能しますか、それとも関数への参照をキャッシュするだけですか?

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

編集:私は自分が望むことを正確に実行するphpアクセラレーターがあることを認識していますが、別のテクノロジーを承認するプロセスを経る必要がないため、memcachedを使用できる方がはるかに簡単です。

4

2 に答える 2

3

私はそうは思わない。当然、私はそれをシリアル化することを検討しました。だが:

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

memcachedを使用すると、おそらくコードを文字列として保存し、create_function引き出した後に呼び出すだけです。

于 2011-06-17T03:58:08.547 に答える
1

関数のソースコードを文字列として「シリアル化」し、create_functionを介して再作成しても、パフォーマンスが向上するとは思いません。外部メディアを使用した入出力+いずれの場合もPHPが実行する必要があることを実行するため、PHPで関数を定義するよりも100倍遅くなります。

オペコードキャッシュを使用する必要があります。しかし、PHPのパフォーマンスがアプリケーションの唯一の永続的なボトルネックである場合、あなたは幸せな人です。

于 2011-06-17T04:08:19.053 に答える