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