Альмонте, Хуан
- 1 year ago
- 0
- 0
Интерфейс FastCGI — клиент-серверный протокол взаимодействия веб-сервера и приложения, дальнейшее развитие технологии CGI . По сравнению с CGI является более производительным и безопасным.
FastCGI снимает множество ограничений CGI -программ. Недостаток CGI-программ — в том, что они должны быть перезапущены веб-сервером при каждом запросе, — что приводит к понижению производительности. FastCGI (вместо того, чтобы создавать новые процессы для каждого нового запроса) использует постоянно запущенные процессы для обработки множества запросов; это позволяет экономить время.
В то время как CGI-программы взаимодействуют с сервером через STDIN и STDOUT запущенного CGI-процесса, FastCGI-процессы используют Unix Domain Sockets или TCP/IP для связи с сервером. Это даёт следующее преимущество над обычными CGI-программами: FastCGI-программы могут быть запущены не только на этом же сервере, но и где угодно в сети. Также возможна обработка запросов несколькими FastCGI-процессами, работающими параллельно.
lighttpd включает в себя внутренний распределитель нагрузки FastCGI, который может использоваться для распределения сразу на несколько FastCGI-серверов. В отличие от иных решений, в кластере должен находиться только FastCGI-процесс, а не целый веб-сервер. Это позволяет использовать FastCGI-процессу больше ресурсов, по сравнению, например, с load-balancer + apache +mod_php.
При сравнении php-FastCGI с apache+mod_php необходимо обращать внимание на то, что FastCGI обеспечивает дополнительную безопасность, такую как, например, запуск FastCGI-процесса под учётной записью пользователя, отличного от пользователя веб-сервера, а также может находиться в chroot 'е, отличном от chroot 'а веб-сервера.
При сравнении perl-FastCGI с apache+mod_perl(1,2), кроме вышеуказанного, заметно, что для разделяемого использования памяти между процессами, реализуемого в mod_perl через startup.pl, необходим FastCGI-менеджер процессов, реализованный на Perl . Это реализуется модулем FCGI::ProcManager и его надстройкой FCGI::Spawn.
FastCGI может быть использован в любом языке, поддерживающем сокеты. Существующие API :