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
Прив'язки FastCGI API в мовах програмуванняFastCGI може бути використаний в будь-якій мові, що підтримує сокети. Існуючі API:
Примітки
Див. такожДжерела |