Как проверить, хорошо ли работает кэш 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.