2011-04-16 29 views
0

私はPHPコードにAPCまたはMEMCACHEDを追加しようとしています! 私の質問はすべてのコードを書き直す必要がありますか? 私はPHPマニュアルを見て、私はこれを持っています!Memcached/APCを追加する必要がありますか?

function get_foo(foo_id) 
foo = memcached_get("foo:" . foo_id) 
return foo if defined foo 

foo = fetch_foo_from_database(foo_id) 
memcached_set("foo:" . foo_id, foo) 
return foo 
end 

だから、変数を格納するために、私は(...)memcached_setを行う必要があるか、それはその私がプラグインを追加し、パフォーマンスの向上を取得するようなものです!

私はAPC/Memcacheのに何のアイデアを持っていないので、この上の任意の議論はAPCで

答えて

1

歓迎され、あなたは最初のオペコード・キャッシュを取得する - その部分のために、あなたのコードに変更するためには何も持っていません:拡張機能をインストールして有効にしてください。

opcodeキャッシュは一般的に高速化されます。つまり、PHPファイルのコンパイルの結果であるopcodeをメモリ内に保持することによって、PHPスクリプトが何度も何度もコンパイルされるのを防ぎます。


次に、APCとmemcachedはデータをメモリに保存できます。通常、これは長い/高価な操作の結果をキャッシュするために使用されます(複雑なSQLクエリ、Webサービス呼び出しなど)

これについては、魔法はありません。データをキャッシュに格納し、そこからフェッチする必要があります。データがキャッシュにない場合は時間のかかる操作を行います。キャッシュは期限切れです。


ここではあなたにいくつかの追加の情報を得るかもしれない質問/ answsersのカップルです:

1

まずあなたがパフォーマンスの向上を取得しますAPCをインストールするだけです。スクリプトが実行されると、Zend_CompileによってPHPコードがOPCODESに変換され、Zend_CompileによってZend_Executeが実行されて実行されます。 PHPをOPCODESに変換するプロセスは、ページが読み込まれるたびに同じです。そのため、次回もやり直すのは無駄です。 APC(Alternative PHP Cache)は、これらのオペコードをメモリに保存するので、次にそのステップをスキップしてページのロードを高速化できます。

スクリプトでキャッシュする場合は、いくつか変更する必要があります。これらの変更は、時間の経過と共に段階的に行うことができ、毎回少しずつパフォーマンスが向上するため、一度にすべてのことを心配する必要はありません。私はAPCを使用する単一のサーバーを持っている場合、将来的に複数のサーバーがある可能性がある場合、私はMemcacheに行くだろう。パフォーマンス改善のための

低ぶら下げフルーツ:

  • は、あなたのホームページのように、多くのことをロードされているものを見つけます。キャッシュにデータがあるかどうかを確認し、使用可能な場合はそれを使用する特別な機能を持つコントローラーを書き直してください。そうでない場合は、古い方法でロードし、キャッシュに格納します。これらのデータストアの両方に配列やオブジェクトを入れることができるので、すばやく実行する必要があります。
  • 実行に時間がかかり、それらも同様にキャッシュするデータベースクエリを見てください。
  • 計算コストの高い他のものをキャッシュすると、これらは特定のアプリケーションに大きく依存します。
関連する問題