2008-09-26 4 views
2

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

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

экспромтом, я бы работать следующим образом:

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

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

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

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

ответ

4

ОК, я забыл об этом ранее. Объяснение моего вопроса привел меня на это:

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

3

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

Смежные вопросы