Кнопка cancel для длительного процесса

mstdmstd

Новичок
Кнопка cancel для длительного процесса

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

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

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

Adelf

Administrator
Команда форума
mstdmstd
Сессии тут не помогут. Ты слегка ошибаешься в своем видении их(как и в технологии ajax. "потоки" - это не совсем подходящее слово).
Но флаг в базе или в файле - может помочь(только забудь о сессии!). Просто разберись внимательнее и у тебя все получится :)
 

dimagolov

Новичок
одновременно писать в сессию может только один скрипт. то есть пока один скрипт держит сессию открытую на запись, все остальные висят и ждут разлочки файла сессии.
[m]session_write_close[/m]
 

pilot911

Новичок
можно сделать асинхронный ajax (запросил и забыл)

и через, например, пару секунд сделать ajax запрос на выборку данных
 
Сверху