Подтвердить что ты не робот

FastCGI для С++

Я нашел только две библиотеки FastCGI для С++. Там "официальный" один и fastcgi ++. Как один лучше другого? Существуют ли другие?

4b9b3361

Ответ 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.

Ответ 6

C-версия FastCGI очень мало, а разработка на С++ - не такая большая проблема, как это вряд ли мешает вашему собственному коду. Скорее всего, это всего лишь цикл и переменная среды.

Поэтому мой совет будет просто придерживаться официальной версии.

Просто помните об одном: он работает, переопределяя printf! Поэтому, если вы используете cout, это не сработает.