Я нашел только две библиотеки FastCGI для С++. Там "официальный" один и fastcgi ++. Как один лучше другого? Существуют ли другие?
FastCGI для С++
Ответ 1
Поскольку fastcgi ++ по-прежнему отображается как "Статус разработки: 4- Бета", поэтому я бы предложил пойти на официальный. Он существует уже целую вечность и имеет привязки для целого ряда языков. Лицензии между этими двумя, по-видимому, не имеют большого значения. Поместите некоторые измерения в свой код, и если производительность будет проблемой, тогда потратьте некоторое время на альтернативные варианты.
Ответ 2
То, что вы, вероятно, хотите, скрыто в каталоге contrib
пакета Cgicc.
fcgi-test.cpp
- пример использования cgicc с FastCGI.
Путь к установленному fcgi-test.cpp
должен быть
/usr/share/doc/libcgicc-doc/examples/contrib/fcgi-test.cpp
Ответ 3
Официальная библиотека довольно низкоуровневая и, как таковая, полезна только в качестве промежуточного уровня для библиотеки CGI высокого уровня, такой как cgicc.
Fastcgi ++, с другой стороны, позволяет использовать идиомы С++ при работе с FastCGI. Неполнота в v1 побудила меня развить его в mosh-fcgi.
Плюсы: Моя вилка соответствует каждой точке стандарта (особенно ROLE_FILTER) все интенсивно шаблонизировано, поэтому проще использовать произвольный T для std:: basic_strings. Минусы: Мои изменения в альфа-режиме.
В любом случае загрузите последнюю версию zip из https://github.com/moshbear/mosh-fcgi.
Ответ 4
См. также библиотеку Cgicc:
http://www.gnu.org/software/cgicc/
Библиотека выглядит зрелой (в настоящее время в версии 3.x). Согласно документации, его можно использовать с FastCGI, передав пользовательский читатель (reader_function_t) конструктору класса Cgicc.
Ответ 5
Существует довольно библиотека для создания демонов FastCGI: https://github.com/golubtsov/Fastcgi-Daemon
Ответ 6
C-версия FastCGI очень мало, а разработка на С++ - не такая большая проблема, как это вряд ли мешает вашему собственному коду. Скорее всего, это всего лишь цикл и переменная среды.
Поэтому мой совет будет просто придерживаться официальной версии.
Просто помните об одном: он работает, переопределяя printf
! Поэтому, если вы используете cout
, это не сработает.