Обработка длительных отчетов

Поскольку $('li[data-toggle="modal"]') не имеет атрибута href, я предполагаю, что вы хотите использовать data-target:

$('li[data-toggle="modal"]').click(function(){
    window.location.hash = $(this).data('target');
});
8
задан Steven Williams 1 October 2008 в 13:27
поделиться

6 ответов

Используя файловую систему вот, вероятно, хорошая ставка. Имейте запрос, который сразу возвращает URL отчету местоположение PDF. Ваш сервер может затем или начать внешний процесс или отправить запрос к себе для выполнения создания отчетов. Клиент может опросить сервер (использующий http ГОЛОВА) для PDF в предоставленном URL. Если Вы заставите имя файла PDF произойти из параметров отчета, или при помощи хеша или при помощи непосредственно помещения параметров на имя, то Вы получите мгновенную сторону сервера, кэширующуюся также.

5
ответ дан 5 December 2019 в 10:44
поделиться

Я считал бы создание этого отчета так или иначе в режиме офлайн с точки зрения обработки.

Как создание очереди для помещения запросов отчета в обработайте отчеты оттуда и после конца, оно может отправить сообщение пользователю.

Возможно, я даже создал бы Сервис отдельных окон для обработки очереди.

Обновление: отправка в пользователя может быть электронной почтой, или у них может быть страница 'отчетов', где они могут проверить состояние своих отчетов и загрузить их, если они готовы.

4
ответ дан 5 December 2019 в 10:44
поделиться

Ваши пользователи не могут принять этот подход, но:

Когда они запрашивают отчет (путем нажатия кнопки или ссылки или безотносительно), Вы могли запустить процесс поколения отчета на отдельном потоке и перенаправить пользователя к странице, которая говорит "спасибо, Ваш отчет будет послан по электронной почте Вам через несколько минут".

Когда поток сделан, генерировав отчет, Вы могли послать PDF по электронной почте непосредственно (вероятно, не будет работать из-за размера), или сохраните отчет о сервере и пошлите ссылку по электронной почте пользователю.

С другой стороны, Вы могли войти в IIS и повысить тайм-аут до> 3 минуты.

2
ответ дан 5 December 2019 в 10:44
поделиться

Вот некоторые вещи, которые я сделал бы, если я буду представлен эта проблема:

1-Остановок они тайм-аут! Они - общая трата ресурсов. (поднимите значение тайм-аута страниц ASP),

2-Централизуют весь доступ дб в одной единственной точке, затем собирают статистику вокруг того, что, выполнили отчеты, когда, кого и сколько времени потребовалось. Займитесь расследованиями, почему это занимает много времени, это из-за сложности отчета? диапазон данных? загрузка сервера? (Вы могли на самом деле все записать, что на .csv файле на сервере и периодически импортируют этот файл в SQL-сервере для анализа позже).

В конечном счете это будет легче для Вас к "кэшу", сообщает, проходите ли Вы эту единую точку доступа (пример, тот же запрос, та же дата возвратит тот же PDF, ранее сгенерированный),

3-я знаю, что это действительно не было вопросом, но Вы попытались погрузиться в те запросы для наблюдения, почему они являются такими длинными для выполнения? Оптимизация запросов, возможно?

4-экранов Email/SMS/on обмениваются сообщениями, когда отчет готов, кажется большим..., если Ваш пользователь обычно отправляет пакет отчета, который будет сгенерирован, возможно, немного панели инструментов, указывающей, что прогрессия "их" очереди могла быть создана в приложении. Немного управления ajax периодически обновляло бы состояние.. Подсказка: Если Вы использовали тот центральный доступ дб, и у Вас есть достаточная информация о том, что работает когда, почему и сколько времени Вы в конечном счете сможете примерно к оценкам время, которое потребуется для отчета работать.

Если время отклика в жестком реальном времени, определенные пользователи должны быть ограничены в диапазоне данных (диапазон дат, например) в течение нескольких часов дня?

Удача и отправьте больше деталей о своем сценарии, если Вы хотите получить более точные подсказки...

2
ответ дан 5 December 2019 в 10:44
поделиться

Что относительно того, чтобы послать отчет по электронной почте пользователю. Вся страница ASP должна сделать, отправляют запрос, чтобы генерировать отчет и возвратить сообщение, что отчет будет послан по электронной почте, после, закончил работать.

1
ответ дан 5 December 2019 в 10:44
поделиться

Оптимизация запросов является, вероятно, Вашим лучшим местом для запуска. Хотя я не знаю, что Вы генерируете отчет, тот шаг не должен действительно брать все настолько долго. Плохо работающий запрос, с другой стороны, мог абсолютно уничтожить Вашу производительность.

В зависимости от того, что Вы находите в рассмотрении запроса, Вы, возможно, должны добавить некоторые индексы или возможно даже настроить таблицу, чтобы хранить информацию для Вашего отчета денормализованным способом, сделать это доступным быстрее. Эта денормализованная таблица могла затем быть обновлена (через Задание SQL Server) каждый час, или с любой частотой Ваши требования диктуют (в причине).

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

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

2
ответ дан 5 December 2019 в 10:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: