Как проверить, хорошо ли работает кэш APC opcode в PHP?

Я использую PHP с включенным кэшем APC:

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

Теперь, как я могу знать, использует ли он кэш кода операции 100%.

например, скажем, что у меня есть этот PHP-файл:

<?php
echo "Hi there";
?>

Теперь после запуска этого файла, Давайте изменим его на echo "Bye there";

не должно ли это эхо "Привет", так как TTL 7200 секунд еще не закончился? Я прав? Если да, то почему это эхо "пока там"? И если я ошибаюсь, как я могу заставить его использовать кэш кода операции даже после изменения файла?

3 ответов


Я не думаю, что вы захотите сделать это в производстве, но вы всегда можете использовать 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.


самый простой способ узнать, работает ли APC, - это создать новый PHP-файл, содержащий этот код...

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

он сбрасывает содержимое apc_cache_info () на экран (будьте осторожны, на большом, живом сайте это может быть много данных!).

каждый раз, когда вы перезагружаете этот файл PHP, вы должны видеть num_hits увеличение, что означает, что использовался кэш кода операции. Промах указывает на то, что APC пришлось перекомпилировать файл из исходного кода (обычно сделано при каждом изменении).


для более приятного интерфейса к этой информации можно использовать apc.php файл, который поставляется с APC. Я скопировал это в каталог моего веб-сайта с помощью этой консольной команды (ваши местоположения папок могут отличаться)...

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

запуск этого файла в вашем браузере дает хорошие цвета и графики!

см. эту ссылку для получения дополнительной информации:
http://www.electrictoolbox.com/apc-php-cache-information/


обычно APC проверяет, был ли запрошенный файл изменен с момента его кэширования. Вы можете контролировать это с apc.stat.