Существуют ли альтернативы CGI (и действительно ли они мне нужны)?
Я разрабатываю приложение, которое будет состоять из 3-4 служб, работающих как отдельные процессы и связанных подходящим IPC. Система будет иметь веб-интерфейс,и я хочу использовать любой веб-сервер.
Веб-интерфейс должен быть доступен по некоторому URL, что позволяет иметь другие URL на том же веб-сервере делать совершенно разные вещи. Я планирую использовать путь ниже этого URL, чтобы указать, что должен делать веб-интерфейс. В нем есть удобства для использования другими приложениями по сети и для людей, чтобы взаимодействовать с ними в браузере.
Без обиняков я бы работал следующим образом:
- заставьте веб-сервер запускать процесс CGI для каждого запроса, который он получает (как SetHandler в Apache)
- пусть CGI соединится с IPC
- пусть он получает все, что ему нужно от серверных служб
- пусть CGI возвращает HTML / XML и любой статус HTTP на основе ответов служб
Теперь, чего я действительно хочу, так это избежать первые два шага, или если я не могу, избегайте второго, потому что я боюсь, что я трачу производительность на ненужные накладные расходы (запросы, поступающие от других приложений, могут быть частыми).
Например, PHP может открывать постоянные соединения с базой данных MySQL, которые переживают время выполнения скрипта и не нуждаются в повторном создании в следующий раз, хотя я не знаю, как они это делают. Кроме того, насколько я понимаю, модули Apache загружаются один раз при запуске сервера, так что это может быть уберите первый шаг, но это свяжет меня с Апачом.Итак, каковы хорошие способы подключить обработчик для определенных URL-адресов к различным веб-серверам? Я не хочу обрабатывать HTTP, иначе я мог бы просто использовать прокси-сервер для второго сервера,но это просто кажется таким изобретением колеса. Если вы думаете, что CGI в порядке и есть примеры, когда он обрабатывает большое количество запросов аналогичной структуры, пожалуйста, дайте мне знать.
2 ответа:
Хорошо, я пропустил это ранее. Объяснение моего вопроса здесь привело меня к нему:
Вместо того, чтобы создавать новый процесс для каждого запроса, FastCGI может использовать один постоянный процесс, который обрабатывает множество запросов в течение своего жизненного цикла. -- Wikipedia: FastCGI