Фоновый процесс копирования файлов в ASP - PullRequest
2 голосов
/ 26 ноября 2009

У меня есть приложение в классическом ASP. При нажатии кнопки он копирует файл и относительную папку из одной папки в другую и отображает ссылку на пользователя для целевой папки. Пользователь может нажать на ссылку и получить файл из папки назначения. Теперь я столкнулся с проблемой с файлом и его относительным размером папки. У меня есть некоторые из них размером более 500 МБ. Итак, процесс копирования занимает столько времени, что мое приложение получает ошибку Time Out. ** Можно ли создать какой-то фоновый процесс для копирования? и когда процесс завершается, он должен запустить какое-то событие. **

Приветствия

Ответы [ 3 ]

1 голос
/ 30 ноября 2009

Варианты, которые я пробовал,

  1. Выполнение команды копирования из оболочки, неэффективно, поскольку страница ASP ожидает завершения команды оболочки.
  2. Создание в базе данных SQL триггера, который срабатывает при добавлении в таблицу новой строки, а затем копирует файлы и отправляет электронное письмо пользователю с помощью TSQL. Это влияет на мою общую производительность базы данных.
  3. Решение AJAX также ожидает завершения процесса.

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

Это решение работает в соответствии с моими требованиями, пожалуйста, поделитесь, если у вас есть лучшее и надежное решение для сценария.

Приветствие.

1 голос
/ 02 декабря 2009

Я подумал о другой идее. Я не уверен в точном способе сделать это на сервере IIS, но если бы я работал на сервере Linux, я бы настраивал задание cron для запуска веб-скрипта каждые 5 минут или около того. Сценарий проверит наличие новых файлов и выполнит копирование. Поскольку копирование может занять более 5 минут, вам, вероятно, потребуется отслеживать файлы в XML-файле или в базе данных или что-то в этом роде.

Это освободит вас от написания / поддержки отдельного приложения для настольного компьютера Windows.

1 голос
/ 30 ноября 2009

Это довольно слабое решение, но, тем не менее, решение: вы можете запустить Ajax-запрос к отдельному сценарию ASP, чтобы выполнить копирование, и просто установить очень длительный тайм-аут для этого сценария. Когда это завершится, он, конечно, может обновить вызывающую страницу с предупреждением или уведомлением для пользователя, но это очень зависит от того, достаточно ли у пользователя терпения, чтобы держать это окно браузера открытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...