Как расширить C ++ HTTP-сервер с помощью приложений FastCGI? - PullRequest
1 голос
/ 03 августа 2011

Я пишу C ++ HTTP-сервер.Но поскольку разработка в C ++ идет медленнее, как, например, в PHP, я хочу также поддерживать приложения FastCGI (PHP через FastCGI, Python через FastCGI и т. Д.).Поэтому я хочу использовать что-то похожее на mod_fcgi (для Apache).Кто-нибудь знает хорошую библиотеку C ++ FastCGI (не для приложений, а для веб-сервера)?Я использую библиотеку Poco для написания веб-сервера.

Другим решением может быть использование интерпретатора PHP непосредственно на моем сервере C ++.Кто-нибудь знает примеры для этого?

Все решения должны иметь в виду производительность.

Ответы [ 3 ]

1 голос
/ 04 августа 2011

Я смотрел эту тему вчера.Как вы, возможно, знаете, fastcgi построен на сокете tcp или unix, ожидающем соединения с определенным протоколом.

Схема запроса следующая: клиент подключается к веб-серверу, который подключается к приложению fastcgi,В зависимости от реализации (спецификации говорят, что веб-сервер передает дескриптор файла, подключенный к веб-клиенту (accept() sockfd) для приложения fastcgi. Я не видел такого поведения с nginx.

Как вы можетеэксперимент?

  1. Установить nginx (Конфигурация очень проста, см. документация )
  2. Скомпилировать php (простая ./configure --enable-fastcgi && makeбудет делать. Займет у меня 30 секунд)
  3. запуск php-cgi на локальный порт 9000 (./sapi/cgi/php-cgi -b 127.0.0.1:9000)
  4. tcpdump / wireshark вывод
  5. Теперь остановите php, изапустить простой tcp сервер (например, nc -l 9000)

Я нашел спецификацию fcgi , которая очень полезна, если вы хотите написать свою собственную библиотеку. Я не был (пока) в состоянии найти код C / C ++ для клиента в fcgi, но его легко найти для perl.

1 голос
/ 03 августа 2011

Если вы пишете систему CMS на C ++, вам следует проверить веб-фреймворк CppCMS на C ++, это кажется очень быстрым.

Если вы хотите сделать это больше изну и напишите HTTP-сервер, у boost есть несколько примеров того, как настроить HTTP-сервер здесь .

Теперь, если вы хотите использовать CGI, который является самым медленным вариантом, есть GNU Cdicc библиотека для обработки CGI.

0 голосов
/ 30 августа 2011

Я не смог найти клиента FastCGI, поэтому написал его сам. Работы было много, но мне это удалось :) Это намного быстрее, чем старый CGI (дух!).

...