Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
0 / 0 / 1
Регистрация: 27.03.2020
Сообщений: 201

Прогресс-индикатор как сделать?

26.11.2020, 18:05. Показов 2991. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На PHP работает долгая задачка (обработка до получаса несколько тысяч файлов).
Для развлекухи пользователя хотел сделать прогресс-индикатор.

Схему действий вижу примерно стандартную - скрипт при работе пишет в сессию процент выполнения, другой скрипт по запросу AJAX отдает процент JS-у, который отрисовывает прогресс.

Но есть 2 нюанса, вернее 1 нюанс и мое непонимание:
1 - не понимаю как запустить выполнение JS скрипта по таймеру каждые 5 сек.
2 - не понимаю как его вообще запустить без явного события.
ну и:
Обработка длинного процесса запускается после передачи параметров из формы в скрипт.
И в результате имеем то, что прорисовка страницы получается только или по завершению скрипта или через некоторое время.
В том числе и прогресс-индикаторы.

Как после прорисовки страницы перед запуском долгого процесса вывести страницу на экран и запустить выполнение скрипта отрисовки каждые несколько секунд?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.11.2020, 18:05
Ответы с готовыми решениями:

Как сделать прогресс-бар?
Есть батник, который копирует архив командою xcopy xcopy \\192.168.0.11\555\BackUp_HOME\1 \\192.168.0.11\555\BackUp_HOME\2 /s /e ...

Как сделать круглый прогресс бар?
Здравствуйте, мне на экран загрузки нужен круглый прогресс бар, а как его сделать не шарю. Пожалуйста помогите

Как сделать прогресс бар туда-сюда в С++ Builder 6?
В .NET можно менять bricks или marquee,а в билдере как?

8
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
26.11.2020, 22:24
Цитата Сообщение от rtt1971 Посмотреть сообщение
не понимаю как запустить выполнение JS скрипта по таймеру каждые 5 сек.
https://learn.javascript.ru/settimeout-setinterval
Цитата Сообщение от rtt1971 Посмотреть сообщение
Как после прорисовки страницы перед запуском долгого процесса вывести страницу на экран и запустить выполнение скрипта отрисовки каждые несколько секунд?
При отправке формы вы не выполняете задачу сразу, а ставите в очередь на выполнение. Можно записывать в базу данных. Потом по крону считывать и запускать процесс в фоне. Там уже никаких сессий не будет. Но можно прогресс записывать в базу данных.
0
0 / 0 / 1
Регистрация: 27.03.2020
Сообщений: 201
28.11.2020, 09:56  [ТС]
А как сделать сначала отрисовку страницы а потом запустить тяжелый процесс?
Можно, конечно, запустить его автономным модулем, но не очень жедательно
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
28.11.2020, 10:38
Цитата Сообщение от rtt1971 Посмотреть сообщение
А как сделать сначала отрисовку страницы а потом запустить тяжелый процесс?
Не запускайте долгие процессы обычным путем, Используйте CRON.
0
0 / 0 / 1
Регистрация: 27.03.2020
Сообщений: 201
28.11.2020, 10:50  [ТС]
а вариантов нет. Нужно обработать пару тысяч записей БД с формированием PDF
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
28.11.2020, 11:34
rtt1971, После формирования pdf можете дать ссылку на скачивание.
0
0 / 0 / 1
Регистрация: 27.03.2020
Сообщений: 201
28.11.2020, 11:55  [ТС]
Да так и есть. Только ПДФ-ки еще зипом в пачки упаковываются, а потом уже ссылки на страницу выводятся

Добавлено через 1 минуту
И задача как раз в том что пока работает скрипт выводился прогресс-индикатор, а потом он пропадал а выводилась табличка с файлами для скачивания.
Время работы до получаса, в зависимости от количества файлов
0
20 / 16 / 4
Регистрация: 01.12.2018
Сообщений: 106
29.11.2020, 19:39
ajax-ом берешь список файлов как массив, тем же ajax-ом идешь по массиву и добавляешь по готовности на страницу ссылки для скачивания на каждый готовый файл. прогресс рисуется если нужно по текущему индексу из массива.
Бредятина полная. Пользователю больше трех кнопок нельзя давать, а тут
Цитата Сообщение от rtt1971 Посмотреть сообщение
Нужно обработать пару тысяч записей БД с формированием PDF
Крутой такой пользователь несколько тысяч пдфок скачивает.Вернитесь, ау!
0
0 / 0 / 1
Регистрация: 27.03.2020
Сообщений: 201
30.11.2020, 19:25  [ТС]
Цитата Сообщение от iplaton Посмотреть сообщение
Крутой такой пользователь несколько тысяч пдфок скачивает.Вернитесь, ау!
Файлы после конвертации упаковываются в архивы с описью по несколько десятков в одном. Их и скачивает пользователь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.11.2020, 19:25
Помогаю со студенческими работами здесь

Как сделать прогресс-бар для цикла операций?
Добрый день сталкнулся с проблемой. Сделал батник который запускает софтину с определенной командой на полтора часа и закрывает ее таких...

Как сделать прогресс бар к вот такой процедуре?
procedure TForm1.Button1Click(Sender: TObject); begin if Edit1.Text<>'' then Memo1.Text:=idhttp1.Get(edit1.Text); end; как видно...

Как сделать прогресс бар для скачиваемых файлов?
Как сделать тут прогресс бар? private void button2_Click_1(object sender, EventArgs e) { var hashes =...

Как сделать индикатор?
У меня в программе есть несколько флагов, хотелось бы отображать их состояние при помощи индикатора, нечто вроде лампочки, как такое можно...

Как сделать, чтобы ProgressBar отображал прогресс выполнения цикла
Пришла очередь разобраться с ProgressBar. Сделал следующие: 1. Создал форму, 2. подключил Microsoft Windows Common Controls, 3....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru