sasha2002 Blog's

Just another blog from admin's

Ускоряем 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


Comments are closed.