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

25 lines
2.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
- 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)