нетривиальная обработка POST во встроенном перле
Daniel Podolsky
onokonem на gmail.com
Вс Фев 7 00:40:23 MSK 2010
День добрый!
Есть клиент, писанный - не мной - на яваскрипте. Работает в браузере.
Среди прочего клиент загружает на сервер файлы. И имеет встроенный
измеритель прогресса. Этот измеритель регулярно ходит на сервер, и
спрашивает о ходе загрузки.
Сервер теперь находится за nginxом.
И, естественно, измеритель не работает - бекенд про загрузку узнает
только по фактическом окончании ее. Правильно я понимаю, что ничего не
изменилось, и небуферизованная отправка на бекенд не поддерживается?
Все бы ничего, но неработающий измеритель ломает все функционирование
клиента. Исправить клиента нет возможности.
Поэтому я перехватываю запросы измерителя, и отвечаю ему, что прогресс
- 0%. Клиент функционирует нормально, но пользователи недовольны
поведением червяка.
Вопрос - можно ли узнать имя файла, в который будет буферизоваться
тело поста, до окончания его приема? Я бы сравнивал его размер с
обещанным, и говорил бы клиенту правду о прогрессе. Или есть
какой-нибудь другой способ узнать, сколько именно данных мы уже
получили?
И второй вопрос.
Пользователи грузят 60-ти мегабайтные csv, которые прекрасно жмутся -
раз в 20. Сервер, однако, зипованную загрузку не поддерживает.
Есть ли способ подменить тело запроса на разжатое перед передачей к
бекенду? Или способ сделать асинхронный http запрос из обработчика?
Понятно, что можно переправить запрос на апач, и там сделать все. Но
вдруг кто уже ходил этой дорогой?
Спасибо.
С уважением,
Даниил Подольский.
Подробная информация о списке рассылки nginx-ru