Ускоряем PHP – Акселератор APC —
Когда ваш любимый сайт начинает тормозить, возникает вопрос – почему?
Основная причина тормознутости PHP без акселератора – комплияция кода при каждом обращении.
Как выглядит обработка запроса пользователя по умолчанию:
- Загрузили файл
- Скомпилировали код
- Выполнили код
- Выдали результат
При этом процесс компиляции кода выполняется при каждом запросе страницы и отнимает большую часть времени на обработку запроса. Для обхода этого узкого места были разработаны PHP акселераторы – эти модули кешируют скомпилированный код в памяти/на диске и в разы увеличивают производительность PHP. Одним из самых простых в установке и стабильных является акселератор APC.
APC может работать в двух режимах, которые настраиваются в переменной apc.stat файла /etc/php.d/apc.ini
При первом обращении к файлу в обоих режимах он сначала компилируется, после чего скомпилированный код кешируется. При последующих выполнениях файла последовательность действий будет другой:
apc.stat=0
- Выполнение кешированного кода
- Выдача результата
apc.stat=1
- Проверка, модифицировался ли файл с момента кеширования.
- Перекомпиляция, если модифицировался
- Выполнение
- Выдача результата
Вариант с apc.stat=1 несколько замедляет работу засчет проверки времени модификации файла, однако позволяет избежать многочисленных непоняток, когда код уже изменен, а выдача еще старая :)
Установка APC на CentOS/RHEL/Fedora:
*Подключаем репу stalwart’а содержащую актуальный apc
wget http://rpm.scwlab.com/el/php/yum.conf -O /etc/yum.repos.d/stalwart.repo
yum install php-pecl-apc
Теперь осталось отредактировать /etc/php.d/apc.ini по вкусу и перезапустить веб-сервер.
Установка APC на Debian/Ubuntu:
apt-get install apache2-threaded-dev php5-dev php5-pear make gcc g++
pecl install apc
Редактируем /etc/php5/apache2/php.ini добавляя:
extension=apc.so
и перезапускаем веб-сервер.
Categorised as: Linux
Comments are disabled on this post