Я пытаюсь выполнить прямой анализ загрузки файла в CGI и показать данные на экране по мере их загрузки.
Однако Apache2, похоже, хочет дождаться полного завершения POST, прежде чем отправлять CGI-приложение вообще.
Как я могу заставить Apache2 прекратить буферизацию POST для моего приложения CGI?
EDIT
Похоже, что на самом деле вывод CGI буферизуется. Я начал потоковую передачу данных во временный файл, чтобы посмотреть, как он работает. Это, и у меня есть другая проблема.
1) Выход буферизуется. Я попытался SetEnvIf (и просто SetEnv) для "! Nogzip", "nogzip" и "! Gzip" без успеха (в пределах определения Справочника CGI).
2) Похоже, что Apache2 не читает выходные данные CGI, пока не завершится процесс CGI? Я заметил, что мое CGI-приложение (очищенное или нет) постоянно зависает на линии "fwrite (..., stdout)" на отметке 80K.
EDIT
Хорошо, Firefox связывается со мной. Если я отправляю файл размером 150 Кбайт, то нет блокировки CGI в районе 80 Кбайт. Если файл 2G, то есть блокировка. Итак, Firefox не читает выходные данные с сервера, пока он пытается отправить файл ... есть ли заголовок или альтернативный тип содержимого, чтобы изменить это поведение?
EDIT
Хорошо, я полагаю, что блокировка вывода CGI для больших файлов на самом деле не важна. Мне не нужно повторять файл! Я отлаживаю проблему, вызванную средствами отладки. :)
Полагаю, тогда это работает достаточно хорошо. Спасибо!
ЗАКЛЮЧИТЕЛЬНОЕ ПРИМЕЧАНИЕ
Как примечание ... я думал, что Apache2 буферизовал входные данные, потому что я всегда получал переменную окружения "Content-Length". Я полагаю, что FireFox достаточно умен, чтобы предварительно рассчитать длину содержимого загрузки из нескольких частей, и Apache2 это передал. Я думал, что Apache2 буферизует ввод и сообщает саму длину.