Есть ли альтернативы CGI (и действительно ли они мне нужны)?

StackOverflow https://stackoverflow.com/questions/139760

  •  02-07-2019
  •  | 
  •  

Вопрос

Я разрабатываю приложение, которое будет состоять из 3-4 служб, которые работают как отдельные процессы и связаны подходящим IPC.У системы будет веб-интерфейс, и я хочу использовать любой веб-сервер, который там есть.

Доступ к веб-интерфейсу должен осуществляться по некоторому URL-адресу, который позволяет другим URL-адресам на одном веб-сервере выполнять совершенно разные действия.Я планирую использовать путь под этим URL-адресом, чтобы указать, что должен делать веб-интерфейс.Он имеет возможности для использования другими приложениями через сеть и для взаимодействия людей в браузере.

Внезапно я бы работал следующим образом:

  • заставить веб-сервер запускать процесс CGI для каждого получаемого запроса (например, SetHandler в Apache)
  • позвольте CGI подключиться к IPC
  • позвольте ему получить все, что ему нужно, от серверных служб
  • пусть CGI возвращает HTML/XML и любой статус HTTP на основе ответов служб

Теперь, чего я действительно хочу, так это избежать первых двух шагов, или, если я не могу, избежать второго, потому что я боюсь, что я трачу производительность на ненужные накладные расходы (запросы, поступающие от других приложений, могут быть частыми). ).

PHP, например, может открывать постоянные соединения с базой данных MySQL, которые сохраняются во время выполнения сценария и их не нужно создавать заново в следующий раз, хотя я не знаю, как они на самом деле это делают.Кроме того, насколько я понимаю, модули Apache загружаются один раз при запуске сервера, так что это может удалить первый шаг, но привяжет меня к Apache.

Итак, каковы хорошие способы подключить обработчик определенных URL-адресов к различным веб-серверам?Я не хочу обрабатывать HTTP, иначе я мог бы просто использовать настройку прокси-сервера для второго сервера, но это похоже на изобретение велосипеда.Если вы считаете, что с CGI все в порядке, и у вас есть примеры обработки большого количества запросов аналогичной структуры, дайте мне знать.

Это было полезно?

Решение

Хорошо, я упустил это раньше.Объяснение моего вопроса здесь привело меня к нему:

Вместо создания нового процесса для каждого запроса FastCGI может использовать один постоянный процесс, который обрабатывает множество запросов за время своего существования.-- Википедия:FastCGI

Другие советы

Даже при умеренных нагрузках CGI остается довольно немасштабируемым зверем.FastCGI — это вариант, но вы, вероятно, также найдете пакет mod_XXXX, где XXXX — это название вашего языка.Например, есть моды для Ruby, Perl и Python и, возможно, еще несколько других.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top