[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Кнопка cancel для длительного процесса
mstdmstd

Всем привет
Есть довольно длительный процесс обработки данных когда данные берутся из разных источников и за разные даты
То есть для каждого источника данных есть цикл по нескольким датам
Сам процесс вызывается через ajax функцию jquery $.get( которая и формирует страницу с результатами
После того как все было отлажено клиенту захотелось кнопку отмены процесса и возможностью
показа частичных результатов те что успели обработать до нажатия кнопки Cancel
Я попытался сделать так : во время обработки вывожу кнопку Cancel и кликом на нее через другую ajax функцию jquery $.get
выставить некий глобальный флаг который был бы считан основным обработчиком в каждом цикле и процесс был бы остановлен

Испольуя сессию как глобальный флаг ничего не получилось
Попробовал использовать таблицу в базе данных Типа при начале запроса пишем строку со строкой сессии и
флагом в false, при клике на кнопке cancel этот флаг устанавливаем в true и в каждом цикле проверяем его
И тоже не получилось - судя по всему(по логам) пока длительный обработчик не выполнится то никакой флаг не
устанавливается То есть когда бы я на cancel не нажал его обработчик выполнится последним
Можно тут что-нить сделать? У jquery нет никаких приоритетов потоков или что-нить подобного?

Я понимаю что это надо было делать полностью на клиенте и проверять средствами JS но как я писал ранне
клиенту захотелось отмены в самом конце. Да и там все полученные данные собираются в один массив - сортируются -
удаляются дублирующие - средствами JS это как-то делать намного сложнее чем на сервере...




Спустя 6 часов, 7 минут, 11 секунд (28.02.2010 - 20:54) FatCat написал(а):
Зачем так сложно все реализовано?
ИМХО, можно проще.
При запуске функция создает пустой файл. Дальше перед каждым циклом проверка существования файла: есть файл - продолжаем и дописываем результат в файл; нет файла - exit.
Аяксом или ифреймом с рефрешем периодически забираете промежуточные результаты из файла.
Кнопкой останова файл удаляется, а рефреши останавливаются.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.