2010-03-04 3 views
2

У меня есть очень простая страница, с которой пользователь загружает файл. Используя только серверный C# (например, код), как я могу измерить количество времени, которое пользователь должен был дождаться загрузки файла?Измерьте время загрузки?

+0

Я не пытаюсь сказать пользователю, сколько времени осталось в загрузке. Я пытаюсь проверить, как долго загружалась загрузка. – lance

ответ

2

Это очень сложно (ну, это было в IIS6). Вам нужно написать HttpModule, чтобы перехватить загрузку и обработать ее, а затем использовать общий размер файла, входящего в него (он находится в заголовке запроса), рассчитать, сколько байтов в секунду вы получаете, а затем вы можете вычислить сколько осталось времени.

Однако вы не можете ничего сделать с помощью только кода-файла - файл уже загружен и доступен к моменту поступления запроса обработчику asp.net.

+0

Вы сказали мне, как рассчитать скорость, а не продолжительность? Это правильно? Ваш последний абзац уместен - говоря, что ASP.NET не знает о запросе, пока он не будет полностью загружен на сервер? – lance

+0

Нет, я сказал вам, как измерить продолжительность. Когда у вас есть байт в секунду, вы можете рассчитать общее время, если знаете общие байты файла. Например. если вы получаете пропускную способность 4 000 байт в секунду, а файл - 16 000 байт, то это займет четыре секунды (оценка: эти вычисления никогда не будут полностью правильными, пока они не будут выполнены). Неявным в этом является то, что вам необходимо поддерживать общее количество полученных байтов и секунд, прошедших с момента запуска, - делить их на два байта в секунду, а затем разделить размер файла в байтах на байты в секунду, чтобы получить количество секунд для всего файла , –

+0

Метод, который я описал, используется для предсказательной оценки прошедшего времени (например, обычно обычно вычитается общее время от общего времени, чтобы дать пользователю «секунды влево» или другое приглашение). Было бы полезно, если бы мы знали, что вы делаете с данными ... если вы просто используете его для создания отчетов в фоновом режиме, решение г-на Фишера должно быть достаточным. –

1

Мне нужно было найти что-то вроде этого и I'm using this.

+0

Что на этой странице говорит мне, сколько времени занимает загрузка? – lance

+0

индикатор выполнения – Fredou

1

Если вы не уверены в полной точности, вы можете отправить быстрый вызов на сервер, чтобы указать, что загрузка начинается, а затем сразу после запроса на загрузку. Затем сервер может измерять время между первым вызовом и завершением второго вызова.

+0

Это не так просто, как кажется, но я все равно собираюсь голосовать. Возьмем, к примеру, случай, когда два пользователя загружают файлы одновременно - сервер должен иметь возможность различать уникальные времена начала файла. Возможность, но не тривиальная. И так как первым вызовом, скорее всего, будет вызов внеполосного AJAX-типа, структура данных на сервере должна быть статичной, и тогда ему нужно будет ее очистить и т. Д. –

Смежные вопросы