Понимание CGI / FastCGI в Rails - PullRequest
2 голосов
/ 15 июля 2009

Это больше для понимания механизма запроса-ответа в веб-приложениях. Клиент отправляет запрос (GET / POST) в веб-приложение. В веб-приложении работает сервер приложений, который служит контейнером для программ, специфичных для приложения. Я не понимаю, когда сервер приложений запускает процесс FastCGI / CGI. Какое значение имеет CGI? Разве серверы не предназначены для обработки всего механизма обработки запросов? Какая часть обработки запросов зависит от CGI?

Ответы [ 2 ]

1 голос
/ 29 января 2010

Я задал подобный (хотя это более близко к реализации, чем концепции) вопрос здесь: отправка HTTP-запроса с веб-сервера процессу CGI / FastCGI

Однако вот что я смог узнать по дороге: CGI - это набор «стандартов», которые определяют, как HTTP / веб-сервер должен взаимодействовать с внешними программами. Обратите внимание на слово стандарты! Хотя это и не протокол out-out (например, HTTP, TCP и т. Д.), Но он довольно близок к тому, поскольку набор стандартов соблюдается большинством внешних программ, генерирующих HTML (Ruby, PHP, Python и т. Д.).

Вы можете узнать больше о CGI здесь: http://hoohoo.ncsa.illinois.edu/cgi/intro.html

и здесь: http://www.w3.org/CGI/

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

Немного не по пути и специфично для Rails, но это интересная хитрость: http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/

0 голосов
/ 15 июля 2009

Связь между клиентом (обычно браузером) и веб-сервером более http . Когда веб-сервер получает запрос, он анализирует запрос и возвращает соответствующий результат. Запрос может быть к файлу, хранящемуся на диске, тогда сервер просто возвращает содержимое файла. Если запрос идентифицирует программу (ваш CGI ), он выполнит ее и вернет вывод вашей программы Клиенту.

...