0

PHPコードにAPCまたはMEMCACHEDを追加する予定です。私の質問は、すべてのコードを書き直す必要があるかどうかです。PHPマニュアルを調べたところ、これがわかりました。

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についてはわかりませんので、これについての議論は大歓迎です

4

2 に答える 2

1

APCを使用すると、最初にオペコードキャッシュを取得します。その部分については、コードで変更する必要はありません。拡張機能をインストールして有効にするだけです。

オペコードキャッシュは一般的に物事をスピードアップします:それは、オペコード(PHPファイルのコンパイルの結果)をメモリに保持することによって、PHPスクリプトが何度もコンパイルされるのを防ぎます。


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

それについては、魔法はありません。データをキャッシュに保存し、そこからフェッチするために、少しコーディングする必要があります。データがキャッシュにない場合、またはキャッシュの有効期限が切れている場合は、時間のかかる/コストのかかる操作を実行します。


ここにいくつかの追加情報を得るかもしれないいくつかの質問/答えがあります:

于 2011-04-16T14:18:54.483 に答える
1

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

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

パフォーマンス向上のための低ぶら下がっている果物:

  • ホームページなど、たくさん読み込まれるものを見つけます。キャッシュにデータがあるかどうかを確認し、利用可能な場合はそれを使用する追加の関数を使用して、そのコントローラーを書き直します。そうでない場合は、古い方法でロードし、キャッシュに保存します。配列とオブジェクトはこれらのデータストアの両方に配置できるため、非常に迅速に実行できるはずです。
  • 実行に時間がかかるデータベースクエリを確認し、それらもキャッシュします。
  • キャッシュする他の計算コストの高いものを見つけてください。これらは特定のアプリケーションに大きく依存します。
于 2011-04-16T14:19:45.043 に答える