Установка APC на Debian

Установка APC из стабильного репозитория

APC в отличие от eAccelerator есть в в пакетном менеджере (версия 3.0.19-2 как раз стабильная из pecl):

apt-get install -y php-apc

После установки будет создан полу-пустой конфиг:

vi /etc/php5/conf.d/apc.ini

И мы получим стандартные настройки APC:

php -i | grep apc
/etc/php5/cli/conf.d/apc.ini,
apc
apc.cache_by_default => On => On
apc.coredump_unmap => Off => Off
apc.enable_cli => Off => Off
apc.enabled => On => On
apc.file_update_protection => 2 => 2
apc.filters => no value => no value
apc.gc_ttl => 3600 => 3600
apc.include_once_override => Off => Off
apc.max_file_size => 1M => 1M
apc.mmap_file_mask => no value => no value
apc.num_files_hint => 1000 => 1000
apc.report_autofilter => Off => Off
apc.rfc1867 => Off => Off
apc.rfc1867_freq => 0 => 0
apc.rfc1867_name => APC_UPLOAD_PROGRESS => APC_UPLOAD_PROGRESS
apc.rfc1867_prefix => upload_ => upload_
apc.shm_segments => 1 => 1
apc.shm_size => 30 => 30
apc.slam_defense => 0 => 0
apc.stat => On => On
apc.stat_ctime => Off => Off
apc.ttl => 0 => 0
apc.user_entries_hint => 4096 => 4096
apc.user_ttl => 0 => 0
apc.write_lock => On => On

И настройки компиляции:

APC Support enabled
Version 3.0.19
MMAP Support Enabled
MMAP File Mask no value
Locking type pthread mutex Locks
Revision $Revision: 3.154.2.5 $
Build Date Dec 17 2008 18:21:28

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

Баги
При установке на Debian 5 + PHP FastCGI + IonCube + Zend Optimizer + APC получаем кучу мусора в dmesg:

[1218697.911671] php[28066]: segfault at e9 ip 00007fac6f561569 sp 00007ffff4066360 error 4 in ZendOptimizer.so[7fac6f4fe000+184000]

А в error.log апача:

[Sun May 30 21:32:36 2010] [notice] mod_fcgid: process /var/www/xxx/data/www/xxxx.ru/index.php(28238) exit(communication error), get unexpected signal 11

При этом сами сайты через раз выбрасывали 500ую и ругались на Cannot found function null (или что-то в этом роде).

Так что, нужно что-то с этим делать.

Установка из исходников

Будем ставить самую новую версию.

cd /usr/src
pecl download apc-3.1.3p1
tar -xf APC-3.1.3p1.tgz
cd APC-3.1.3p1
phpize
./configure # все стандартно
make
make install

Создаем конфиг:

echo «extension=apc.so» > /etc/php5/conf.d/apc.ini