Что лучше выбрать в качестве обработчика для PHP скриптов?

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

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

Есть несколько различных обработчиков, которые можно использовать для загрузки PHP: CGI, DSO, suPHP, и FastCGI. Каждый обработчик поставляет библиотеки через разные файлы и реализации. Каждый файл и реализация влияет на производительность веб-сервера Apache, поскольку он определяет, как Apache обслуживает PHP.

Важное значение для производительности сервера имеет выбор обработчика, который соответствует вашей ситуации. Этот выбор так же важен, как и версия PHP. Один обработчик не всегда лучше, чем другой, это зависит от вашего сайта или CMS системы.

Примечание: Вы можете назначить свой обработчик PHP для различных версий PHP. Например, версия 5, может быть обработана CGI, в то время как PHP 4 обрабатывается DSO.
Как изменить обработчик
В Cpanel это делается очень легко и занимает всего несколько секунд. Войдите в WHM и перейдите к: Главная>> Сервис Конфигурация>> Настройка PHP и Suexec

Вы просто выбираете ваш  PHP обработчик из выпадающего меню. Затем нажмите «Сохранить»

DSO

известный как mod_php. Это более старая конфигурация, но, как правило, этот обработчик считается самым быстрым. PHP работает как модуль Apache. Это означает, что PHP-скрипты будут выполняться от имени пользователя Apache, который по-умолчанию является пользователем: «nobody».

DSO имеет два недостатка. Во-первых, все файлы, созданные PHP-скриптом будут принадлежать пользователю «nobody». Они не будут читаться из Интернета. Сайты, на которые необходимо загрузить файлы при помощи PHP, будут сталкиваться с проблемами, связанными с правами на файлы. Это часто встречается с пользователями, которые использют WordPress.

Вторым, и на наш взгляд очень важным, недостатком является проблема безопасности. Созданные файлы будут иметь «nobody» права. Сервера, использующие этот вид интерпретатора, чаще всего подвергаются хакерским атакам. Очень важно следить за уязвимостями вашего кода, потому как это единственный метод защитить сайт от нежелательных «инъекций»
Как правило, эти проблемы не сильно влияют на большинство пользователей.
Преимущемством DSO считается низкая загрузка процессора, что позволяет экономно расходовать ресурсы сервера.

CGI
CGI-обработчик — это когда PHP работает как CGI-модуль, в отличие от модуля Apache. CGI по-прежнему обрабатывает  PHP-процессы как пользователь «nobody». Обычно CGI-метод предназначен в качестве запасного варианта, когда обработчик для DSO недоступен. По собственной документации CPanel, этот метод не является ни быстрым, ни безопасным, независимо от того, включён Suexec или нет.

suPHP
suPHP также  запускает PHP как CGI-модуль. Он отличается от CGI тем, что PHP-скрипты, которые вызываются из сети, будут работать из-под пользователя, которому принадлежит скрипт. suPHP, как правило, является обработчиком по умолчанию и рекомендован для обслуживания CPanel PHP, потому что вы сможете увидеть, какие пользователи запускают те или иные PHP скрипты.

suPHP выгодно в том, что если вы используете инструмент загрузки файлов на вашем сайте (например, автоматического обновления или темы / установка модуля подключения для WordPress), файлы уже будут иметь право собственности и права доступа владельца. Загрузка и другие функции WordPress не будут работать без suPHP или FastCGI.

Основным преимущесмтовм suPHP является безопасность. Любой скрипт PHP, который не является собственностью конкретного пользователя (например, другой пользователь), не будет исполняться. Кроме того, файлы, которые имеют разрешения, отличные от 644, также будет неисполняемыми. Это означает, что если одна учетная запись будет взломана, вредоносные скрипты не смогут заразить другие сайты вашего сервера.

Недостатком является то, что suPHP использует намного больше загрузки процессора. Кроме того, вы не можете использовать Opcode кэш (например, XCache или APC) с suPHP. Если вы обнаружите, что ваш сервер все еще постоянно борется с загрузкой ЦП, вам нужно будет рассмотреть вопрос о переходе к DSO или FastCGI.

FastCGI
FastCGI (иначе: mod_fcgid) является альтернативой CGI. Однако имеет ряд преимуществ. Он безопасен и имеет преимущества suPHP в том, что скрипты PHP будут работать как фактический пользователь CPanel, в отличие от «nobody». Отличие от FastCGI  в том, что он может существенно сэкономить на производительности процессора и дать скорость, близкую к DSO. Он также может быть использован механизмами кеширования, такими как Eaccelerator или APC, которые могут способствовать дальнейшему увеличению скорости загрузки страниц.

Основным недостатком является то, что FastCGI имеет высокую загрузку памяти по сравнению с другими загрузчиками.

Если учесть потребности безопасности и преимущества suPHP,  и вы можете себе позволить значительное увеличение использования памяти , мы рекомендуем вам рассмотреть вопрос об использовании FastCGI.

Вывод

Мы бы хотели показать таблицу, в которой было бы видно преимущества и недостатки каждого описанного нами обработчика.

  DSO CGI SuPHP FastCGI
Минимальное использование CPU ?     ?
Минимальное использование памяти   ? ?  
Запуск PHP из под владельца файла   ? ? ?
Безопасность     ? ?
Возможность использования механизмов кеширования (APC, xCache, eAccelerator)  ?     ?

Также нами был взят стандартный сервер в облаке с параметрами 2CPU и 2GB RAM(Cloud-VPS-4) , на который мы установили  последнюю версию cPanel/WHM и настроили все 4 версиии обработчика. Затем мы взяли один сайт с установленным WordPress и провели замеры производительности работы сайта. Для тестирования мы использовали утилиту ab с количеством одновременных подключений равным 100. Вот что у нас получилось:

 Как видно, FastCGI справился быстрее всех, обработав за 15 секунд 100 запросов, в среднем это 6,5 запроса в секунду. Поэтому можно сделать вывод, что если нету необходимости экономить память сервера, смело можно переключаться на FastCGI или DSO,  тем самым увеличив скорость загрузки страниц вашего сайта. В противном случае следует делать выбор между CGI или suPHP.