Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2009, 09:12   #1
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию информирование пользователя о % исполнения

Собственно имеем некий процесс в PHP (открытие и обработка большого файла) - хотелось бы информировать пользователя о % исполнения.... или просто показывать счетчик обработанных строк...
как лучше поступить? хочу использовать JQuery Ajax для этого - но вот как что запутался:
запустили процесс - передали счетчик=0 в скрипт - в скрипте обработали - увеличили счетчик на 1 - передали на фронтенд, отобразили - опять передали в бекенд-скрипт ...итд..... не будет ли это слишком расточительно - туда сюда запросами кидаться?
ADSoft вне форума Ответить с цитированием
Старый 30.11.2009, 16:18   #2
mv28jam
Старожил
 
Аватар для mv28jam
 
Регистрация: 09.09.2008
Сообщений: 2,624
По умолчанию

а другого выхода нет
Чтобы не было затратно, сервер по первому запросу клиента должен подсчитывать "скорость прогресса" и отправлять клиенту вместе ответом о прогрессе ещё и достаточный интервал запроса.
Например:
У вас файл обрабатывается 4 часа. При первом запросе от клиента сервер говорит что сделано 25% и исходя из заданной вами формулы считает что следующий запрос о прогрессе клиенту стоит отправить через 5 минут, тк за меньшее время ничего не измениться. Соответсвенно чем сильнее надо экономить тем большее время следующего запроса может отправлять сервер. Ближе концу отбработки можно назначать время меньше, чтобы клиент не ждал, после окончания работы.
Стрелок-охотник
mv28jam вне форума Ответить с цитированием
Старый 01.12.2009, 03:14   #3
Gerb22
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 48
По умолчанию

Если не ошибаюсь, достаточно просто JS, называйте меня консерватором, но к чему АЯКС вешать куда надо и куда не надо?

Просто отправляйте данные, игнорируйте юзер_аборт. В роли данных нечто вида <script>func_show_progress(int_cur_ progress_state);</script>, ну и в теле должна уже быть функция, обрабатывающая данное.

ЗЫ: а вообще я бы не так делал, а следующим путем - есть скрипт, который занимается своей работой, периодически скидывая в БД/файл показатели текущего прогресса, а само информирование - отдельный скрипт, который только этим и занимается и рефрешится с определенной периодичностью.
Gerb22 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Компонент для исполнения команд postal2 Компоненты Delphi 2 15.10.2009 18:10
Разница исполнения под Windows XP и Windows Server 2003? -Nast- Общие вопросы Delphi 0 02.06.2009 09:20
Права пользователя Zloy_Doomer Операционные системы общие вопросы 5 18.12.2008 17:11
С++ Builder Изменение размеров компонентов на форме во время исполнения программы Bair C++ Builder 3 18.12.2008 13:43
Как запустить приложение, дождаться его исполнения и только потом выполнять код? il76 Win Api 6 19.07.2007 14:00