APC в PHP

APC - это Alternative PHP Cache, а если по-русски то php-акселератор. Бесплатная и открытая система для кэширования предкомпилированных PHP скриптов, позволяет значительно увеличить производительность PHP скриптов выполняющихся из под mod_php.

Ставится обычно просто:

# apt-get install php-apc

На Ubuntu 10.04 LTS по умолчанию ставится версия 3.1.3p1-2 и тут скрывается маленький подвох: из-за небольшого косяка в APC апачевский лог error.log забивается следующей ерундой:

[Thu Oct 14 23:56:25 2010] [apc-warning] Potential cache slam averted for key ...

Некоторые гуглолюди предлагают починить прописыванием директив

apc.slam_defense=0
apc.write_lock=0

но лично мне это не помогло, т.к. в данной версии apc.slam_defense просто отсутствует.

Решение простое: откатиться до более старой версии или обновиться до 3.1.5

Я выбрал обновление. Итак, поехали:

# apt-get install php5-dev apache2-threaded-dev
# pecl install apc-3.1.5
# service apache2 restart

Если интересно как работает APC и насколько эффективно, делаем следующее:

# cp /usr/share/php/apc.php /путь-до-папки-на-вашем-вебсервере - для НОВОЙ версии
# cp /usr/share/doc/php-apc/apc.php.gz /путь-до-папки-на-вашем-вебсервере - для СТАРОЙ версии
# gzip -d /путь-до-папки-на-вашем-вебсервере/apc.php.gz - для СТАРОЙ версии

При необходимости правим владельца файла, ставим права на apc.php и открываем страничку http://www.ваш-вебсервер.ru/apc.php

Там можно понаблюдать за жизнью кэша, посмотреть эффективность его работы, проверить на наличие новой версии и так далее.

Сносим все (если нужно) таким способом:

# pecl uninstall apc-3.1.4
# apt-get remove php-apc