2.3 KiB
2.3 KiB
- Common Gateway Interface
- Простейший механизм вызова пользователем программ на стороне сервера
- Данные отправляются программе посредством HTTP-запроса, формируемого веб-браузером
- То, какая именно программа будет вызвана, обычно определяется URL запроса
- Каждый запрос обрабатывается отдельным процессом CGI-программы
- Взаимодействие программы с веб-сервером осуществляется через
stdinиstdout
Жизненный цикл CGI-запроса
- Браузер присылает HTTP-запрос
POST /api/check?id=5с теломx=1&y=2 - Веб-сервер (например Apache Httpd) создает новый процесс в ОС и запускает скомпилированную программу
- Метаданные (заголовки и тп) кладутся в переменные окружения, тело запроса отправляется в
stdin - Программа выполняется как будто с ней взаимодействует пользователь в консоли
- Веб-сервер забирает ответ из
stdout - ОС убивает процесс запущенной программы
Достоинства
- Программы могут быть написаны на множестве ЯПов
- Падение CGI-сценария не приводит к падению всего сервера
- Исключены конфликты при параллельной обработке нескольких запросов
- Хорошая поддержка веб-серверами
Недостатки
- Высокие накладные расходы на создание нового процесса в ОС
- Плохая масштабируемость
- Слабое разделение уровня представления и бизнес-логики
- Могут быть платформо-зависимы
Как развитие - FastCGI