web-dev-qa-db-ja.com

PHPでAPCオペコードキャッシュが正常に機能しているかどうかを確認する方法

APCキャッシュを有効にしてPHPを使用しています:

apc.cache_by_default => On
apc.enabled => On
apc.ttl => 7200

さて、オペコードキャッシュを100%使用しているかどうかはどうすればわかりますか。

たとえば、次のPHP file:

<?php
echo "Hi there";
?>

このファイルを実行した後、echo "Bye there";に変更しましょう

TTL 7200秒はまだ終わっていないので、「こんにちは」とエコーすべきではありませんか?そうですか?そうであれば、なぜ「そこに」とエコーしますか?そして、間違っている場合ファイルを変更した後でもオペコードキャッシュを使用するように強制するにはどうすればよいですか?

26
Lina

実稼働環境で実行したいとは思いませんが、常に apc_cache_info() を使用できます。

function is_file_cached($file) {
    $info = apc_cache_info();
    foreach ($info['cache_list'] as $cache) {
        if ($cache['filename'] == $file) return true;
    }
    return false;
}

これは、指定されたファイルをチェックしてキャッシュされているすべての単一ファイルを反復処理するため、効率的ではないことに注意してください。

また、特定の質問に関する限り、APCはファイルの変更時にキャッシュを自動的に無効にします。そのため、ファイルを編集すると、APCはこれを静かに検出し、新しいファイルを提供します。これを無効にするには apc.stat = 0

19
ircmaxell

APCが機能しているかどうかを確認する最も簡単な方法は、このコードを含む新しいPHPファイルを作成することでした...

<pre><?php
print_r(apc_cache_info());

Apc_cache_info()の内容を画面にダンプします(大規模なライブサイトでは、これはlotsのデータになる可能性があります!)。

このPHPファイルをリロードするたびに、num_hits増加、つまりオペコードキャッシュが使用されたことを意味します。ミスは、APCがソースからファイルを再コンパイルしなければならなかったことを示します(通常、変更のたびに行われます)。


この情報へのより良いインターフェースのためにapc.php AP​​Cに付属するファイル。このコンソールコマンドを使用して、これを自分のWebサイトディレクトリにコピーしました(フォルダの場所は異なる場合があります)...

cp /usr/share/doc/php-apc/apc.php /usr/share/nginx/html/apc-stats.php

ブラウザでこのファイルを実行すると、素敵な色とグラフが得られます!

詳細については、次のリンクを参照してください。
http://www.electrictoolbox.com/apc-php-cache-information/

21
Simon East

通常、APCは、要求されたファイルがキャッシュされてから変更されたかどうかを確認します。これは apc.stat で制御できます。

9
rik