RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


linux:apc

PHP: APC opcache

APC крайне популярный даже в 2016 году опкэш.

Установка

Centos 6

# yum install php-pecl-apc

Версия в base репозитории

Name        : php-pecl-apc
Arch        : i686
Version     : 3.1.9
Release     : 2.el6
Size        : 96 k
Repo        : base
Summary     : APC caches and optimizes PHP intermediate code
URL         : http://pecl.php.net/package/APC
License     : PHP
Description : APC is a free, open, and robust framework for caching and optimizing PHP
            : intermediate code.

Версия в Atomic репозитории

<code>
Name        : php-pecl-apc
Arch        : i686
Version     : 3.1.15
Release     : 0.6.svn329913.el6.art
Size        : 140 k
Repo        : atomic
Summary     : APC caches and optimizes PHP intermediate code
URL         : http://pecl.php.net/package/APC
License     : PHP
Description : APC is a free, open, and robust framework for caching and optimizing PHP
            : intermediate code.

Debian 7

# apt-get install php-apc

Если используется репозиторий dotdeb

# apt-get install php5-apc

pecl

APC можно установить и через pecl

# pecl install apc

Но для этого нужно дополнительно ставить devel-пакеты, gcc и др.

# yum install httpd-devel gcc make php-devel php-pear pcre-devel 

Иначе можно словить такую ошибку

/usr/include/php5/ext/pcre/php_pcre.h:29:18: fatal error: pcre.h: No such file or directory
compilation terminated.
make: *** [apc.lo] Error 1
ERROR: `make' failed

Конфигурационный файл apc.ini

Пример конфигурационного файла

[APC]
extension=apc.so
apc.enabled=1
;Only set to 1 while debugging
apc.enable_cli=0
apc.shm_segments=1

;32M per WordPress install
apc.shm_size=256M

;Relative to the number of cached files (you may need to watch your stats for a day or two to find out a good number)
apc.num_files_hint=7000

;Relative to the size of WordPress
apc.user_entries_hint=4096

;The number of seconds a cache entry is allowed to idle in a slot before APC dumps the cache
apc.ttl=7200
apc.user_ttl=7200
apc.gc_ttl=3600

;Setting this to 0 will give you the best performance, as APC will
;not have to check the IO for changes. However, you must clear 
;the APC cache to recompile already cached files. If you are still
;developing, updating your site daily in WP-ADMIN, and running W3TC
;set this to 1
apc.stat=1

;This MUST be 0, WP can have errors otherwise!
apc.include_once_override=0

;Allow 2 seconds after a file is created before it is cached to prevent users from seeing half-written/weird pages
apc.file_update_protection=2

;Leave at 2M or lower. WordPress does't have any file sizes close to 2M
apc.max_file_size=2M

;Ignore files
apc.filters = "/var/www/apc.php"

apc.cache_by_default=1
apc.use_request_time=1
apc.slam_defense=0
apc.mmap_file_mask=/var/www/temp/apc.XXXXXX
apc.stat_ctime=0
apc.canonicalize=1
apc.write_lock=1
apc.report_autofilter=0
apc.rfc1867=0
apc.rfc1867_prefix =upload_
apc.rfc1867_name=APC_UPLOAD_PROGRESS
apc.rfc1867_freq=0
apc.rfc1867_ttl=3600
apc.lazy_classes=0
apc.lazy_functions=0

Описание опций на сайте PHP.

Как отключить APC и включить только для некоторых сайтов

Отключаем APC по-умолчанию (apc.ini)

extension=apc.so
apc.enabled=1
apc.cache_by_default=0

Включаем на уровне виртуального хоста или через .htaccess файл.

<IfModule mod_php5.c>
php_flag apc.cache_by_default On
</IfModule>

Веб-интерфейс

У APC есть встроенный админ-интерфейс. Для активации необходимо скопировать apc.php в желаемый каталог

CentOS

# cp apc.php /var/www/html/apc.php

Debian

# cp /usr/share/doc/php-apc/apc.php /var/www/html/apc.php

Но если для PHP вы используете репозиторий dotdeb, то файла apc.php у вас не будет. В каталоге /usr/share/doc/php5-apc/ где казалось бы он должен быть только файл changelog.Debian.gz

# find / -type f -name apc.php*
/usr/share/phpmyadmin/libraries/import/upload/apc.php

apc.php можно достать из .deb пакета - http://ftp.us.debian.org/debian/pool/main/p/php-apc/php-apc_3.1.13-1_amd64.deb

pecl

Если установка производилась через pecl, то apc.php должен быть в каталоге /usr/share/pear/apc.php

Проверка

При попытке зайти по адресу http://foobar.com/apc.php

появится сообщение You need to set a password at the top of apc.php before this will work!

Устанавливаем логин и пароль для доступа к APC

defaults('ADMIN_USERNAME','apc');               // Admin Username
defaults('ADMIN_PASSWORD','password');          // Admin Password - CHANGE THIS TO ENABLE!!!

Альтернативный админ интерфейс для APC

Ошибки

PHP Startup: apc.shm_size now uses M/G suffixes

Ошибка PHP Warning: PHP Startup: apc.shm_size now uses M/G suffixes, please update your ini files решается просто

Необходимо указать размер кэша в мегабайтах "M" или гигабайтах "G"

Вместо

apc.shm_size=256

должно быть указано

apc.shm_size=256M

phpmyadmin не работает с APC

Ошибка

PHP Fatal error:  Class 'PMA_Error_Handler' not found in .../phpMyAdmin/libraries/common.inc.php on line X
PHP Fatal error:  Call to undefined function PMA_getenv() in .../phpMyAdmin/libraries/common.inc.php on line X

Отключаем через .htaccess (см. выше) или через виртуальный хост

<Directory /var/www/phpMyAdmin/>
    php_admin_value apc.enabled 0
</Directory>

Unable to allocate memory for pool

Ссылки

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
 
linux/apc.txt · Последнее изменение: 2018/06/21 02:49 — 127.0.0.1