FastCGI
Інтерфейс 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 процесу під користувачем, відмінним від користувача web-сервера, а також може знаходитися в chroot-оточенні, відмінному від chroot-оточення веб-сервера.
При порівнянні perl-FastCGI з apache + mod_perl (1,2), крім вищевказаного, помітно, що для розділяється використання пам'яті між процесами, що реалізується в mod_perl через startup.pl, необхідний FastCGI — менеджер процесів, реалізований на Perl. Це реалізується модулем FCGI::ProcManager і надбудовою над ним, FCGI::Spawn.
Вебсервери з підтримкою FastCGI
- Abyss Web Server
- Apache HTTP-сервер (частково)
- Використовуються чужі модулі mod_fastcgi або mod_fcgid
- Мультиплексування запитів через одне з'єднання неможливо в цій архітектурі веб сервера Apache [1]
- AXesW3
- Cherokee HTTP Server [2]
- Hiawatha webserver [3]
- Підтримка ізольованою FastCGI сервера
- Lighttpd
- LiteSpeed Web Server
- Microsoft IIS [4]
- MyServer
- Nginx
- Підтримка групи серверів
- Open Market Web Server
- Roxen webserver
- Sun Java System Web Server (і попередники)
- WebSTAR
- Zeus
Прив'язки FastCGI API в мовах програмування
FastCGI може бути використаний в будь-якій мові, що підтримує сокети. Існуючі API:
Примітки
- # AEN147 FastCGI — The Forgotten Treasure / Section 2.3. Архів оригіналу за 8 лютого 2010. Процитовано 11 листопада 2009.
- FastCGI для Cherokee. Архів оригіналу за 25 червня 2008. Процитовано 11 листопада 2009.
- # fastcgi FastCGI HOWTO for Hiawatha. Архів оригіналу за 23 березня 2008. Процитовано 11 листопада 2009.
- FastCGI для IIS (technical preview 2)