Я пишу сценарий загрузки базы данных в ColdFusion. Это загружает приблизительно 150 000 записей через дюжину таблиц. Я запускаю скрипт через запрос веб-браузера. Там какой-либо путь состоит в том, чтобы уничтожить процесс, после того как я запросил страницу? Я могу остановить страницу в браузере, но база данных вставляет, продолжают бэкенд, пока сценарий не завершился, который делает процесс отладки очень медленным, так как я должен запустить весь скрипт каждый раз. Есть ли что-нибудь, что я могу сделать через бэкенд Java?
Среда, в которой я нахожусь, является ColdFusion 8, пробегающим IIS. У меня есть отключенный контроль производительности, но я хотел бы смочь подражать способности уничтожить задания как в мониторе производительности.
Я пытался сделать что-то вроде pid-файла Unix: ваш скрипт должен периодически (возможно, каждые 10/100/1000 итераций) проверять доступность какого-либо файла в файловой системе и прекращать выполнение, если он содержит определенное значение, а может быть, существует или нет вообще.
Конечно, это может быть поле в базе данных, переменная в области приложения (с соответствующей стратегией блокировки) или что угодно, что вы сочтете подходящим.
Вам также понадобится второй скрипт, который будет изменять состояние вашего "pid-объекта". Это может быть так же просто, как другой файл .cfm, который вы можете загрузить с помощью браузера.
В цикле из 150 000 записей вы можете просто остановить его на том числе, которое считаете подходящим. Установите переменную счетчика и всякий раз, когда она попадет в цикл, просто
или
.
Вы, вероятно, захотите запустить процесс, используя cfthread .
Запустите свой процесс, например ...
<cfthread name="myThread" action="run">
...Your loop to insert into database....
</cfthread>
Затем вы можете убить поток, используя ...
<cfthread action="terminate" name="myThread"/>
с некоторыми продуктами, такими как fusionreactor, вы можете убить базовый поток Java, но если база данных действительно контролирует запрос, вы не можете остановить его (в базе данных). Вам нужно подождать, пока база данных не вернет управление потоком.
Если у вас установлено программное обеспечение для управления, такое как FusionReactor, вы можете использовать его для остановить выполнение скриптов.