238  /  253

Производительность PHP

Просмотров: 48338
Дата последнего изменения: 11.01.2024
Роберт Басыров
Сложность урока:
3 уровень - средняя сложность. Необходимо внимание и немного подумать.
1
2
3
4
5

  PHP прекомпиляторы

Важно! До 60% рабочего времени веб-сервера тратят на повторную компиляцию PHP-кода перед исполнением.

Ключевой способ снизить нагрузку на процессор – использовать прекомпиляторы PHP-кода. В настоящее время поддерживается акселератор OPcache (рекомендуется, доступен сразу «из коробки» в PHP v.5.5+).

Не забывайте выделять достаточный объем оперативной памяти для хранения разделяемого кэша скомпилированных PHP-файлов. Обычно бывает достаточно 32-64 Мб, но для уверенности можно увеличить объем выделяемой памяти до 128 Мб, в расчете на файлы административного раздела. Прекомпиляторы используют разделяемый кэш для хранения скомпилированного PHP кода в оперативной памяти, который доступен всем рабочим процессам веб-сервера, при этом скомпилированный PHP код хранится в кэше в единственном экземпляре (без дублирования).

Для уменьшения потребляемой памяти процессами веб-сервера, в котором запускается PHP, желательно исключить из компиляции или динамической загрузки все неиспользуемые модули.

При этом очень важно, чтобы в кэш прекомпилятора помещалось достаточное количество скриптов на PHP. Одна из самых часто встречающихся ошибок - это отсутствие каталога для сохранения откомпилированного кода.

Для ускорения работы с PHP-сессиями рекомендуется сохранять файлы сессий в каталоге, который представляет собой виртуальный диск в памяти или использовать установку session.save_handler=mm в php.ini. Если есть возможность, рекомендуется использовать системный RAM диск. При этом необходимо отключать опцию Передавать пароль в зашифрованном виде на закладке Авторизация страницы настроек Главного модуля.

  Панель производительности

Важным инструментом по настройке производительности PHP является модуль Монитор производительности, входящий в комплект всех продуктов "1С-Битрикс". Протестировать настройки системы можно в административной части на странице Панель производительности (Настройки > Производительность > Панель производительности). Неоптимальная конфигурация PHP:

Как правило, выполнение рекомендаций позволяет увеличить производительность системы до достаточных величин. Численное значение параметра Конфигурация показывает основную характеристику сайта – скорость отдачи страниц клиенту. Чем больше число, тем лучше.

  Некоторые типовые ошибки

Ошибка Segmentation fault может произойти:

  • В результате "падения" РНР при использовании отложенной загрузки классов;
  • При использовании Zend server могут "упасть" скрипты в cron или консоли.

В первом случае необходимо определить в dbconn.php:

define("NO_BITRIX_AUTOLOAD",true)

Во втором случае надо:

  • либо использовать другую версию PHP без подключения Zend optimizer+ ;
  • либо скопировать хостерский php.ini куда-то выше document root, удалить подключение Zend extension manager или zend optimizer и прописать в кроне опцию -c, которая позволяет указать папку, в которой необходимо искать файл php.ini.
  • либо в "падающем" скрипте определить:
    define('BX_NO_ACCELERATOR_RESET', true)

18
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии