Files
obsidian/Веб/Клиент-сервер/CGI.md
T
roma-dxunvrs 12a473f46e
deploy / Pull and Restart (push) Successful in 17s
web update
2026-10-04 19:57:51 +03:00

2.3 KiB
Raw Blame History

  • Common Gateway Interface
  • Простейший механизм вызова пользователем программ на стороне сервера
  • Данные отправляются программе посредством HTTP-запроса, формируемого веб-браузером
  • То, какая именно программа будет вызвана, обычно определяется URL запроса
  • Каждый запрос обрабатывается отдельным процессом 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