13

複数のphpファイルサイトを高速化するAPCについて読んだことがあります。したがって、PHP にこの特定のプロジェクトがあり、多くのファイルがあり、require_once とクラス定義のみの解析 (実行なし) に最も時間がかかることがわかりました。

そのため、CentOS 5 サーバーに APC をインストールしました。apc.php を Web サーバーに移動したところ、表示されました

Hits: 1 (50.0%)
Misses: 1 (50.0%)

Cached Files    1 (281.1 KBytes)

そして、私はウェブサイトに行ってサブページなどを変更することができます.apc.phpはまだ1つのキャッシュファイルしか表示しません??

そして phpinfo() では、次のことが示されています。

APC サポートが有効

どうすればいいのかわからない。APC は (phpinfo() sais のように) 機能していますか、それとも機能していませんか? 私のウェブサイトでいくつかのページを閲覧した後、キャッシュされたファイルは1つだけではありません。

さらに、エラーを診断し、APC が機能していることを確認する方法は? 閲覧しました

apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf

ディレクトリ/tmpですが、phpinfoに記載されているようにapcのファイルはありません。

APC が機能しているかどうか、機能していない場合は何が問題なのかを確認してください。

4

6 に答える 6

8

APCは次の 2 つの方法で使用できます。

  1. オペコードキャッシュとして。サポートが有効になっているため、これは機能しています。と
  2. 一般的なキャッシュとして。これにはAPIを明示的に使用する必要があります。

(1)が最大のメリットです。「コンパイル」スクリプトのオペコード結果を保存することで、スクリプトの実行時間を短縮します。

動作に関しては、インストール手順から:

注: Windows では、APC には一時パスが存在し、Web サーバーから書き込み可能である必要があります。TMP、TEMP、USERPROFILE 環境変数をこの順序でチェックし、いずれも設定されていない場合は最後に WINDOWS ディレクトリを試します。

そのため、CentOS では必要ありません (またはアクティビティが表示されません)。

そうは言っても、require/include は require_once/include_once/autoload よりも優れていますが、何百ものファイルでそれを行う場合にのみ問題になるはずです。

于 2009-09-30T00:40:50.613 に答える
2

あなたのサイトは基本的に 1 つの PHP ファイルであり、他のファイルをインクルードまたは必要としますか? 単一のファイルとして登録される場合があります。また、私が知る限り、条件付きの include/require ロジックは期待どおりにキャッシュされない可能性がありますが、それは単なる伝聞かもしれません!

于 2009-09-30T00:54:21.877 に答える
1

ログファイルを確認しましたか?/var/log/apache2/error.logを確認するか、ディストリビューションで名前が付けられています。

また、2〜3個のphpファイルを作成し、ブラウザにそれらを向けてから、APCキャッシュによってキャッシュされているphpファイルの数を確認してください。

APCについてはよくわかりませんが、Eaccelerator(http://eaccelerator.net/)をお勧めします。私はしばらく前にそれをテストし、本当に違いを生みました。

于 2009-09-30T11:55:55.657 に答える
1

APC 3.1.5dev ブランチでは、opcode キャッシュを無効にできる 新しいオプションが導入されました。デフォルトではオフになっているようです。

これを APC 設定ファイルに追加してみてください:

apc.enable_opcode_cache=1
于 2014-05-24T15:25:09.967 に答える
1

APC は実際にはプロセス間でキャッシュを共有しません。チャイルドをフォークするように PHP プロセスを構成し、マスター PHP プロセスを実行したままにします。

参照: FastCGI で実行しているときに、複数の PHP プロセス間で APC キャッシュを共有する方法は?

于 2009-10-04T17:58:47.093 に答える
0

http://www.litespeedtech.com/support/forum/showthread.php?t=3761

「APC は、各 PHP プロセスが共有ではなく独自のキャッシュ メモリを使用するため、PHP suEXEC ではうまく機能しません。

PHP suEXEC を使用する必要がある場合は、eAccelerator + /dev/shm を試してください。"

同じ問題が発生しました。PHP suEXEC + APC が問題のようです

于 2011-04-08T05:32:44.983 に答える