Подтвердить что ты не робот

Как проверить, работает ли кеш-код операции APC в 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 секунд еще не закончился? Я прав? Если да, то почему он эхо "Bye there"? И если я ошибаюсь, могу ли я заставить его использовать кеш-код операции даже после изменения файла?

4b9b3361

Ответ 1

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

Ответ 2

Самый простой способ узнать, работает ли 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

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

apc-1.png

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

Ответ 3

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