Я пишу HTTP-сервер C ++. Но поскольку разработка на C ++ медленнее, например, в PHP, я хочу также поддерживать приложения FastCGI (PHP через FastCGI, Python через FastCGI и т. Д.). Поэтому я хочу использовать что-то похожее на mod_fcgi (для Apache). Кто-нибудь знает хорошую C ++ FastCGI-библиотеку (не для приложений, а для веб-сервера)? Я использую библиотеку Poco для написания веб-сервера.
Другим решением может быть использование PHP-интерпретатора непосредственно на моем сервере C ++. Кто-нибудь знает примеры для этого?
Все решения должны иметь представление о производительности.
Если вы пишете CMS-систему на C ++, вы должны проверить веб-фреймворк CppCMS на C ++, это кажется очень быстрым.
Если вы хотите сделать это с нуля и написать HTTP-сервер, у boost есть несколько примеров того, как настроить HTTP-сервер здесь .
Теперь, если вы хотите использовать CGI, который является самым медленным вариантом, есть библиотека GNU Cdicc для обработки CGI.
Вчера я смотрел эту тему. Как вы, возможно, знаете, fastcgi построен поверх сокетов tcp или unix, ожидающих соединения с определенным протоколом.
Схема запроса следующая: клиент подключается к веб-серверу, который подключается к приложению fastcgi. В зависимости от реализации (спецификации говорят, что веб-сервер предоставляет файловый дескриптор, подключенный к веб-клиенту ( accept()
sockfd) к приложению fastcgi. Я не видел такого поведения с nginx.
Как вы можете экспериментировать?
php-cgi
на localhost port 9000 ( ./sapi/cgi/php-cgi -b 127.0.0.1:9000
) nc -l 9000
) Я нашел спецификацию fcgi, которая очень полезна, если вы хотите написать свою собственную библиотеку. Я еще не смог найти код C / C ++ для клиента в fcgi, но его можно легко найти для perl.
Я не смог найти клиента FastCGI, поэтому сам написал. Это была большая работа, но мне это удалось 🙂 Это намного быстрее, чем простой старый CGI (duh!).