Рубрика:
Веб /
Веб
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
АНДРЕЙ УВАРОВ
Оптимизация работы PHP при помощи PHPAccelerator
В статье «Кэширование веб-сценариев» февральского номера журнала была затронута тема оптимизации сайтов. Рассмотренный способ является несколько трудоёмким. Одним из более эффективных решений является PHPAccelerator. О нём, собственно, и пойдет разговор в данной статье.
Итак, что же такое PHPAccelerator (PHPA)? Это расширение, подключаемое к PHP-компилятору, которое за счёт кэширования ускоряет работу скриптов. В вышеупомянутой статье мы ускоряли работу скриптов за счёт кэширования их вывода, но в данном случае кэширование подразумевает устранение чтения кода, его грамматического разбора, компилирования, многих операций выделения памяти и копирования, а также, отчасти, дисковых операций. Очень важно, что для кэширования скриптов мы не должны изменять каким-либо образом код. Это является большим плюсом и экономит наше время, по сравнению с организацией кэширования скриптов вручную. Находится PHPAccelerator по адресу: http://php-Accelerator.co.uk и является полностью бесплатным. В настоящий момент существуют версии для платформ: Linux, OpenBSD, FreeBSD, BSDi и Solaris. Возможно, в будущем в этот список будет включена и Windows. Стоит также заметить, что PHPAccelerator совместим только с веб-сервером Apache, но как надеются разработчики, будет осуществлена поддержка и для других веб-серверов, из которых следующим является Zeus.
Установка PHPAccelerator даже для неискушённого пользователя представляет собой дело весьма простое. Скачав архив с нужной версией и распаковав его, мы получаем несколько файлов характера «readme», phpa_ cashe_admin и собственно саму библиотеку с названием вроде «php_accelerator_1.3.3r2.so». Для установки необходимо скопировать эту библиотеку в то место, где, по вашему мнению, она должна находиться, обычно это /usr/local/lib (лично мне больше нравится /usr/local/lib/phpa). В качестве следующего шага необходимо добавить в файле php.ini полный путь к месту, где находится PHPAccelerator.
Например:
zend_extension=/usr/local/lib/phpa/php_accelerator_1.3.3r2.so
по причине того, что PHPAccelerator не является модулем, используется параметр zend_extension.
Если вы используете модуль «dbg.so», то для корректной работы вам скорее всего придётся его отключить, так как он является несовместимым с PHPAccelerator. Для того чтобы все совершённые нами изменения вступили в силу, необходимо перезагрузить веб-сервер. Как и было обещано, установка не представила никаких трудностей.
После инсталляции возникает вопрос: «А как проверить, работает ли PHPAccelerator?».
Существует несколько способов проверить вызывающий у нас сомнения факт.
Способ 1
При работе PHPAccelerator добавляет к HTTP-заголовку ответа параметр: X-Accelerated-By. Вы можете проверить это, выполнив команду HEAD.
Например:
[dashin@dashin home]HEAD http://dashin/test.php
200 OK Connection: close Date: Sun, 01 Feb 2004 06:21:34 GMT Accept-Ranges: bytes Server: Apache/2.0.40 (ASPLinux) Content-Type: text/html; charset=ISO-8859-1 Client-Date: Sun, 01 Feb 2004 06:21:34 GMT Client-Response-Num: 1 X-Accelerated-By: PHPA/1.3.3r2 X-Powered-By: PHP/4.2.2 |
Способ 2
Дело в том, что если PHPAccelerator установлен, то в массиве $GLOBALS создаётся ключ _PHPA. Вот пример простого скрипта, выводящего содержимое этой переменной:
<?php
var_dump($GLOBALS['_PHPA']);
?>
Если всё в порядке, то результат должен быть примерно следующим:
array(3) {
["ENABLED"]=>
bool(true)
["iVERSION"]=>
int(10302)
["VERSION"]=>
string(5) "1.3.2"
}
В противном случае будет выведено «NULL». Чтобы определить, в чём заключается неисправность, заглянем в error_log (error_log является местом, куда веб-сервер сохраняет сведения о возникающих ошибках и некоторую другую служебную информацию, обычно этот файл располагается в каталоге /var/log/httpd). Наличие сообщения, подобного следующему:
Failed loading /usr/local/lib/phpa/php_accelerator_1.3.3r2.so: /usr/local/lib/phpa/php_accelerator_1.3.3r2.so: undefined symbol: _ecalloc |
свидетельствует о несовместимости PHPAccelerator с установленной версией PHP. В этой ситуации вам необходимо скачать нужную версию PHPAccelerator и заменить ей старую. Это решит возникшую перед вами проблему.
Установив PHPAccelerator, уже можно наслаждаться повышением быстродействия. Ознакомиться с тестами производительности, можно по адресу: http://www.php-accelerator.co.uk/perfomance.php.
Но, как говорится, нет предела совершенству. Вы можете самостоятельно изменить настройки посредством добавления соответствующих ключей в файл php.ini и присвоения им нужных вам значений. Таким образом, можно определить файлы или каталоги, которые не должны подвергаться кэшированию, установить промежуток времени, через который будет осуществляться чистка кэша (чистка кэша заключается в удалении кэшированных файлов, срок жизни которых истёк, т.е. тех, которые не использовались дольше установленного времени). Более подробно о настройке говорить не стоит, так как всё очень подробно описано в файле CONFIGURATION, поставляемом вместе с PHPAccelerator, да и особых трудностей возникнуть не должно.
Единственное, что хочется добавить, так это то, что, приступая к настройке, да и вообще использованию, вы должны быть уверены в том, что знаете, насколько часто вызываются и обновляются ваши скрипты, иначе вы просто не получите должного результата.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|