@@ -0,0 +1,25 @@
|
||||
- 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)
|
||||
Reference in New Issue
Block a user