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:

Примітки

  1. # AEN147 FastCGI — The Forgotten Treasure / Section 2.3. Архів оригіналу за 8 лютого 2010. Процитовано 11 листопада 2009.
  2. FastCGI для Cherokee. Архів оригіналу за 25 червня 2008. Процитовано 11 листопада 2009.
  3. # fastcgi FastCGI HOWTO for Hiawatha. Архів оригіналу за 23 березня 2008. Процитовано 11 листопада 2009.
  4. FastCGI для IIS (technical preview 2)

Див. також

Джерела

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.