URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7570
[ Назад ]

Исходное сообщение
"C++ FastCGI - как соединится серверу с программой?"

Отправлено Алексей , 30-Авг-08 01:55 
Всем привет

Есть код:
#include "fcgi_stdio.h" /* fcgi library; put it first*/

#include <stdlib.h>

int count;

void initialize(void)
{
  count=0;
}

int main()
{
/* Initialization. */  
  initialize();

/* Response loop. */
  while (FCGI_Accept() >= 0)   {
    printf("Content-type: text/html\r\n"
           "\r\n"
           "<title>FastCGI Hello! (C, fcgi_stdio library)</title>"
           "<h1>FastCGI Hello! (C, fcgi_stdio library)</h1>"
           "Request number %d running on host <i>%s</i>\n",
            ++count, getenv("SERVER_HOSTNAME"));
  }
}

Я его успешно скомпилировал, получил бинарник.

Как мне теперь заставить веб сервер соединится с моей программой?
Как указать сокет, например /tmp/fastcgi.sock, чтобы сервер соединялся с ним?

Сервер: nginx/0.5.34

Помогите пожалуйста
С уважением, Алексей


Содержание

Сообщения в этом обсуждении
"C++ FastCGI - как соединится серверу с программой?"
Отправлено parad , 30-Авг-08 02:10 
1) Это C, а не C++.
2) nginx.ru - раздел документация, + в дефолтном конфиге должен быть пример (1-2 строчки конфига).

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Алексей , 30-Авг-08 02:20 
>1) Это C, а не C++.
>2) nginx.ru - раздел документация, + в дефолтном конфиге должен быть пример
>(1-2 строчки конфига).

Возможно непонятно поставил вопрос, прошу прощения.

Вопрос скорее к тем людям, которые писали программы с использованием fcgi library.

Как настроить nginx я в курсе, интересует как указать полученной программе хост+порт на котором висеть или unix сокет.


"C++ FastCGI - как соединится серверу с программой?"
Отправлено foo , 30-Авг-08 07:07 
>Возможно непонятно поставил вопрос, прошу прощения.
>Вопрос скорее к тем людям, которые писали программы с использованием fcgi library.
>Как настроить nginx я в курсе, интересует как указать полученной программе хост+порт
>на котором висеть или unix сокет.

Можно узнать зачем вам указывать fcgi-скрипту на каком хосте и порту висеть?


"C++ FastCGI - как соединится серверу с программой?"
Отправлено TyLLIKAH , 30-Авг-08 10:36 
>Как настроить nginx я в курсе, интересует как указать полученной программе хост+порт
>на котором висеть или unix сокет.

Не надо висеть. Работает так же как и php скрипт - запускается сервером. Серевер передаёт ему параметры и забирает вывод.


"C++ FastCGI - как соединится серверу с программой?"
Отправлено foo , 30-Авг-08 19:55 
>Не надо висеть. Работает так же как и php скрипт - запускается
>сервером. Серевер передаёт ему параметры и забирает вывод.

всю мазу испортил. мы тут тотализатор устроили по поводу насколько быстро чел фтыкнет че-почем на основе наводящих вопросов... а ты все обломал :)


"C++ FastCGI - как соединится серверу с программой?"
Отправлено parad , 30-Авг-08 11:31 
Есть 2 пути запуска: через свапер (лучше всего для этих целей подходит из комплекта поставки lighttpd) - в этом случае все диалог с программой будет проходить через std{in,out,err}; либо биндить сокет и самостоятельно обрабатывать его обслуживать.

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Алексей , 12-Сен-08 18:48 
>Есть 2 пути запуска: через свапер (лучше всего для этих целей подходит
>из комплекта поставки lighttpd) - в этом случае все диалог с
>программой будет проходить через std{in,out,err}; либо биндить сокет и самостоятельно обрабатывать
>его обслуживать.

Попробовал запустить через свапер, программа в процессах есть, но nginx соединится с ней не может.

>>либо биндить сокет и самостоятельно обрабатывать

Где можно про это подробнее почитать не подскажете?

С уважением, Алексей


"C++ FastCGI - как соединится серверу с программой?"
Отправлено parad , 17-Сен-08 18:23 
Для C - искать в примерах к библиотеки, если таковы имеются. очень мало кто пишет на С веб-интерфейсы, из них еще меньше под фастцги. По скорости запуск С-программы в CGI, от FastCGI почти не будет отличаться, т.к. после обращения к файлу ОС его кеширует, собственно поэтому нет смысла...

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Аноним , 17-Сен-08 20:03 
>По скорости запуск С-программы в CGI, от FastCGI почти не
>будет отличаться, т.к. после обращения к файлу
>ОС его кеширует, собственно поэтому нет смысла...

Помедетируй почему я не буду волноваться если мой эфсиджиай сервер будет грузиться скажем 5 минут? И буду совершенно убит если сиджиай - займёт 5 секунд :)


"C++ FastCGI - как соединится серверу с программой?"
Отправлено angra , 18-Сен-08 01:41 
Ну я даже не знаю, может вам к врачу стоит обратится :)

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Аноним , 18-Сен-08 05:55 
>Ну я даже не знаю, может вам к врачу стоит обратится :)
>

А у вас имя подозрительное ...
FCGI server загружается единожды и висит в памяти, CGI - поднимается на каждый запрос. Про то что оно в кэше окажется - ну если у вас рамы 16GB и 1 запрос в минуту и больше ничего и нет .... то вам с FCGI и в самом деле париться не стоит :)


"C++ FastCGI - как соединится серверу с программой?"
Отправлено angra , 18-Сен-08 16:50 
Если скрипт _выполняется_ 5 секунд, то fastcgi ему ничем не поможет. fastcgi всего-лишь сокращает время загрузки, интерпретации для скриптов и, не для всех языков, инициализации ресурсов. Для сишной программы только последнее может быть актуальным, например если идет работа с ораклом. Так что ваше утверждение либо неправильно сформулировано, либо абсурдно.

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Аноним , 20-Сен-08 00:31 
>Если скрипт _выполняется_ 5 секунд,

Моё сообщение всё еще не потерто - можно указать где я говорил про _выполняется_?

>Так что ваше утверждение либо неправильно сформулировано, либо абсурдно.

Либо у вас проблемы с русским языка :)

Хотя похоже в потрохах технологии вы разобрались.
Кстати, не обязятельно с оракалом - инициализация коннекта к любой базе уже стоит того, чтобы уйти на FCGI и иметь connections pool :)


"C++ FastCGI - как соединится серверу с программой?"
Отправлено parad , 20-Сен-08 11:39 
По-порядку:
1) Яица не жмут?
2) Речь все-таки идет не о скриптовом фцги, а сишном - это принципиальная разница.
3) ОС кеширует все что попадается ей под руку, и хрен знает каким надо быть программистом, чтобы умудриться написать код, размер которого после компиляции будет весить 16 гиг.
4) Да у меня есть машины с 16 и 32 гигами памяти, - но они под БД, под веб - 1гиг - даже 10% не выедается.
5) Речь все-таки не о коннектах к БД, а целесобразность веб программирования на си.

"C++ FastCGI - как соединится серверу с программой?"
Отправлено Константин , 18-Сен-08 03:14 
>[оверквотинг удален]
>>его обслуживать.
>
>Попробовал запустить через свапер, программа в процессах есть, но nginx соединится с
>ней не может.
>
>>>либо биндить сокет и самостоятельно обрабатывать
>
>Где можно про это подробнее почитать не подскажете?
>
>С уважением, Алексей

http://trac.lighttpd.net/trac/browser/trunk/src/spawn-fcgi.c


spawn-fcgi-1.4.11 - spawns fastcgi processes
usage:
-f <fcgiapp> filename of the fcgi-application
-a <addr>    bind to ip address
-p <port>    bind to tcp-port
-s <path>    bind to unix-domain socket
-C <childs>  (PHP only) numbers of childs to spawn (default 5)
-P <path>    name of PID-file for spawed process
-n           no fork (for daemontools)
-v           show version
-h           show this help
(root only)
-c <dir>     chroot to directory
-u <user>    change to user-id
-g <group>   change to group-id