Pull to refresh

cPanel :: Feature Request :: FastCGI Process Manager (FPM) SAPI

Reading time4 min
Views3.4K
привет,
я думаю многие кто работал с панелью знают, что без кастылей не установить mod_fastcgi + php-fpm.
мне кажется если каждый с хабра зайдет и оставит свой голос в поддержку реализации данного функционала, то разработчики также не смогут оставить этого без внимания и включат ее в стандартный набор.

features.cpanel.net/responses/fastcgi-process-manager-fpm-sapi

FastCGI Process Manager (FPM)

FPM (Менеджер процессов FastCGI) является альтернативной реализацией PHP FastCGI с несколькими дополнительными возможностями обычно используемыми для высоконагруженных сайтов.

Эти возможности включают в себя:

  • продвинутое управление процессами с корректной (graceful) процедурой остановки и запуска;
  • возможность запуска воркеров с различными uid/gid/chroot-окружением, а также запуска на различных портах с использованием разных php.ini (замещение safe_mode);
  • логирование стандартных потоков вывода (stdout) и ошибок (stderr);
  • аварийный перезапуск в случае внезапного разрушения opcode-кэша;
  • поддержка ускоренной загрузки (accelerated upload);
  • «slowlog» — логирование необычно медленно выполняющихся скриптов (не только их имена, но также и их трассировки. Это достигается с помощью ptrace и других подобных утилит для чтения данных исполнения удаленных процессов);
  • fastcgi_finish_request() — специальная функция для завершения запроса и сброса всех буферов данных, причем процесс может продолжать выполнение каких-либо длительных действий (конвертирование видео, обработка статистики и т.п.);
  • Тип запуска дочерних процессов — динамический, статический и по требованию (ondemand);
  • Базовая информация о статусе SAPI (аналогично Apache mod_status);
  • Конфигурационный файл, основанный на php.ini.



небольшая вики для тех, кто не понимает, что здесь происходит:

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

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

и что??

Список PHP обработчиков:

DSO (mod_php)


DSO также известен как mod_php. DSO расшифровывается как: Dynamic Shared Object. Это старый, но, как правило, считается самым быстрым обработчиком. Он работает как модуль Apache. Это означает, что PHP скрипты будут исполняться как пользователь Apache, который является пользователем: «nobody».

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

Вторым недостатком является проблема безопасности. Созданные файлы будут иметь владельца «nobody». Если хакер находит уязвимость в вашем скрипте PHP, он мог бы изменить или использовать файл, который имеет те же привилегии, важные системные файлы, которые также принадлежат «nobody».

CGI


CGI расшифровывается как: Common Gateway Interface. CGI обработчик будет обрабатывать PHP как CGI модуль, в отличие от модуля Apache. Тем не менее, если у вас есть suExec, это позволит вам увидеть, какой пользователь сделал запрос.

CGI метод предназначен в качестве запасного варианта, когда обработчик DSO недоступен. По собственной документации cPanel, это метод не является ни быстрым, ни безопасным, независимо от того, включен или нет suExec.

suPHP


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

НО, тут одно НО:
Недостатком suPHP является то, что он создает гораздо более высокую нагрузку на процессор. Кроме того, с suPHP вы не можете использовать кэширование кода (например, eAccelerator или APC). Что создает дополнительную нагрузку и замедляет скорость обработки.

как они могли использовать его по умолчанию основным обработчиком??????

FCGI


FCGI (иначе: mod_fcgid ) является высокo производительным обновлением/вариантом CGI. Он имеет преимущества suPHP. Разница с FCGI в том, что он может существенно сэкономить на производительности процессора и дать скорости, близкой к DSO.

Недостатком FCGI является (дословно):
mod_fcgid passes just one request to the FCGI server at a time while mod_fastcgi passes several requests at once, the latter is usually better for PHP, as PHP can manage several request using several threads and opcode caches like APC usually work only with threads and not with processes. This means that using mod_fcgid you end up having many PHP processes which all have their very own opcode cache.

bugs.debian.org/cgi-bin/bugreport.cgi?bug=504132#25

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

почитать и ключевые слова о том что нужно реализовать.

real FastCGI mod_fastcgi != mod_fcgid
www.fastcgi.com/drupal/node/6

php-fpm
php-fpm.org/about
Tags:
Hubs:
-8
Comments2

Articles

Change theme settings