![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
gustavomarginale |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 2.7.2008 Репутация: нет Всего: нет |
Всем привет.
Пишу в раздел "сети", т.к. куда ещё - незнаю. Жил-был web-сервер на C++ в виде nginx + FastCGI + C++ приложение + libfcgi. Понадобилось реализовать приём файлов через отправку юзером POST-формы. Ранее эту задачу решал модуль PHP, но в этом случае неудобство обработки POST-запроса с вложенным файлом в том, что пока весь файл на сервер не передастся, управление скрипт не получает. В PHP я особо не шарю, может быть это как-то и можно было обойти, но PHP-реализация была быстра и решала базовую задачу. К сожалению при использовании libfcgi, функция
возвращается ТОЖЕ только после полного упихивания файла, отправляемого HTML-формой на сервер. Это есть большое неудобство, т.к. мне нужно разорвать с незалогиненным пользователем соединение, если он отправил форму с большим файлом ещё ДО того, как весь файл придёт на сервер. Чтобы было понятно, простой пример. Если пользователь постит файл на URL = http://example.com/?sid=123, но 123 - это невалидное значение, мне необходимо ещё до окончания передачи файла (а в друг он гигабайтный?) сказать моему HTTP-frontend-у (которым является nginx), чтобы тот разорвал это соединение немедленно - мне не нужно забивать канал этим файлом. Спасибо. (если хотите быстро со мной связаться -> jabber: [email protected]) Это сообщение отредактировал(а) gustavomarginale - 10.11.2011, 23:31 |
|||
|
||||
gustavomarginale |
|
|||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 2.7.2008 Репутация: нет Всего: нет |
Видимо считается нормальным не регулировать эту вещь со стороны FastCGI. Если требуется прерывание длинных файлов со стороны сервера, используются другие решения, самописные HTTP-сервера и т.п. и т.д. Пробовал отправлять 1.5-гиговый файл через HTML-форму на localhost и наблюдал сниффером за диалогом между nginx и FastCGI-приложением. Nginx даже не начинает ничего посылать по этому соединению, пока не получит весь файл.
|
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |