Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FastCGI, POST: Как разорвать HTTP-соединение? Как разорвать соединение не дожидаясь... 
:(
    Опции темы
gustavomarginale
Дата 10.11.2011, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Всем привет.

Пишу в раздел "сети", т.к. куда ещё - незнаю.

Жил-был web-сервер на C++ в виде nginx + FastCGI + C++ приложение + libfcgi.

Понадобилось реализовать приём файлов через отправку юзером POST-формы. Ранее эту задачу решал модуль PHP, но в этом случае неудобство обработки POST-запроса с вложенным файлом в том, что пока весь файл на сервер не передастся, управление скрипт не получает. В PHP я особо не шарю, может быть это как-то и можно было обойти, но PHP-реализация была быстра и решала базовую задачу.

К сожалению при использовании libfcgi, функция
Код

int FCGX_Accept_r(FCGX_Request *request);

возвращается ТОЖЕ только после полного упихивания файла, отправляемого HTML-формой на сервер.

Это есть большое неудобство, т.к. мне нужно разорвать с незалогиненным пользователем соединение, если он отправил форму с большим файлом ещё ДО того, как весь файл придёт на сервер.

Чтобы было понятно, простой пример. Если пользователь постит файл на URL = http://example.com/?sid=123, но 123 - это невалидное значение, мне необходимо ещё до окончания передачи файла (а в друг он гигабайтный?) сказать моему HTTP-frontend-у (которым является nginx), чтобы тот разорвал это соединение немедленно - мне не нужно забивать канал этим файлом.

Спасибо.

(если хотите быстро со мной связаться -> jabber: [email protected])


Это сообщение отредактировал(а) gustavomarginale - 10.11.2011, 23:31
PM MAIL   Вверх
gustavomarginale
Дата 11.11.2011, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 2.7.2008

Репутация: нет
Всего: нет



Видимо считается нормальным не регулировать эту вещь со стороны FastCGI. Если требуется прерывание длинных файлов со стороны сервера, используются другие решения, самописные HTTP-сервера и т.п. и т.д. Пробовал отправлять 1.5-гиговый файл через HTML-форму на localhost и наблюдал сниффером за диалогом между nginx и FastCGI-приложением. Nginx даже не начинает ничего посылать по этому соединению, пока не получит весь файл.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0694 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.