The Common Gateway Interface (CGI)

Common Gateway Interface (CGI) позволяет HTTP-серверу и сценарию CGI делиться ответственностью за запросы клиентов. Сервер ответственен за работу с соединениями, передачу данных, транспорт и различные сетевые задачи. CGI, в свою очередь, управляет всеми процессами, связанными с приложением, такими как доступ к данным и подготовка документов.

Как работает CGI

CGI – протокол описывающий передачу данных между web-сервером и приложением (PHP, Python и т.д.). На практике, когда web-сервер получает запрос, пересылает его приложению. Детали относительно запроса (User Agent, cookie и т.д.) передаются как аргументы командной строки или переменные окружения, а данные из POST или PUT запросов передаются через стандартный поток. Затем приложение пишет ответ в стандартный поток вывода.

Плюсы

  • Большая безопасность по сравнению с mod_php, т.к. php код выполняется изолированно от web-сервера.

Минусы

  • На каждый запрос порождается отдельный процесс.
  • Запуск процесса может быть ресурсоёмким. Большое количество одновременных запросов (а каждый порождает процесс) могут быстро загрузить сервер.
  • Проектирование архитектуры где web-сервер и приложение находятся на разных машинах может быть трудоёмким, если не невозможным.

FastCGI

Желание найти решение заставило Open Market разработать новую версию CGI: Fast Common Gateway Interface (FastCGI) направленных на ускорение и упрощение связи подпрограмм сервера.

FastCGI предлагает значительные улучшения по сравнению с CGI, установлением следующих принципов:

  • Вместо порождения процессов на каждый запрос, FastCGI использует постоянные процессы, которые имеют возможность обрабатывать несколько запросов.
  • Web-сервер и приложение взаимодействуют через TCP сокеты или POSIX сигналы. Следовательно, web-сервер и приложение могут находиться на разных серверах.
  • Web-сервер отправляет клиентский запрос и получает ответ в рамках одного соединения. У следующих запросов нет необходимости создавать дополнительные соединения.
  • Т.к. FastCGI протокол основанный на сокетах, он может использоваться на любой платформе и любом языке.

Плюсы

  • Улучшенная безопасность, т.к. PHP код выполняется изолированно от web-сервера.
  • Отдача статики происходит быстрее, т.к. не обрабатывается интерпретатором PHP.
  • Позволяет работать с файлами по FTP без изменения прав доступа.

Минусы

  • Невозможно использовать .htaccess.
  • Требуется, чтобы PHP-запросы проходили через web-сервер.

PHP-FPM

Менеджер процессов, как следует из названия, приложение, которое управляет PHP процессами. Он ожидает и получает инструкции от web-сервера, и запускает PHP скрипты в рамках настроенного окружения. На практике, PHP-FPM вводит ряд возможностей, таких как:

  • Автоматически демонизирует PHP (переводит в фоновый процесс)
  • Выполняет скрипты в изолированной среде
  • Улучшенное логирование, ограничение IP адресов, разделение пулов и многое другое

Как работает PHP-FPM



Комментарии

добавить
Комментариев пока нет. Будете первым?
Чтобы комментировать, нужно авторизоваться

Советуем почитать


Федеральная система
Сергей 0

Федеральная система "Город" читать далее

В прошлый раз описал процесс работы с платёжной системой Cyberplat, теперь хочу поделиться опытом работы с ФСГ (Федеральная система город).

Разработано сие чудо ЦФТ. Старались делать все по ГОСТ, поэтому произвести интеграцию не так просто, как хотелось бы (рассматриваем PHP).

0 11.07.2016 17:40:15

PHP Управление строками
Максим 0

PHP Управление строками читать далее

Мало кто из разработчиков задумывается о том, как устроено ядро PHP и что происходит «под капотом». Действительно, на практике большинству редко бывают нужны подобные знания, тем не менее обладать ими будет полезно. Статья рассказывает о том, как устроены строки в PHP и о различиях работы с ними в PHP 5 и 7.


Это мой первый перевод подобной статьи, тем более технически не самой простой. Обо всех неточностях пишите в комментариях или лично мне.

0 04.05.2016 23:28:31