Эмуляция прогресс-бара

Статус
В этой теме нельзя размещать новые ответы.

xIcemanx

Создатель
Регистрация
28 Ноя 2008
Сообщения
14
Реакции
1
Доброго всем времени суток!
У меня следующий вопрос...
Встречал в некоторых скриптах эмуляцию прогресс-бара т.е. ползущей полоски с процентом выполнения долгообрабатываемой операции.
Допустим, у нас есть 5-10 очень жирных SQL-запросов, которые выполняются 10-20 секунд.
Каким образом можно сделать динамический вывод полоски?
В целом я понимаю что делается это через ob_start(); и другие функции буферинга... но КАК именно это делается - въехать не могу. Пересмотрел кучу всвезможных исходников, в том числе исходник Syplex Dumper'a (кстати, как наглядный пример) - потерял только полкило нервов и почти безрезультатно.
Объясните идиоту, как это работает? :)
Буду благодарен за любую помощь :bc:
 
1. создаем сессию
2. выполняем долгоиграющие вещи с записью результата в эту сессию
3. в бразуер отправляем страницу где просто gif с полоской прогресса, через N секунд она просто перегружается, выдавая результаты из сессии.

В подавляющем большинстве случаев делается именно так.
 
я могу ошибаться, но тот же сайплекс работает по схеме - один запрос - какой то процент. т.е. в случае 5 запросов каждый из них будет 20% на прогресс баре и после него нужно посылать на увеличение на 20%.
 
Собственно, волнует не то, каким именно способом будет строиться бар - таблицей, картинкой, хоть обычными точками. Интересует конкретно рабочий пример.
У меня, допустим, ни один из примеров не давал ползущей полосы. Страница просто полностью загружается через 10-15 секунд, когда отрабатывается скрипт.

1. создаем сессию
2. выполняем долгоиграющие вещи с записью результата в эту сессию
3. в бразуер отправляем страницу где просто gif с полоской прогресса, через N секунд она просто перегружается, выдавая результаты из сессии.
В подавляющем большинстве случаев делается именно так.
Интересует приём именно без перезагрузки страницы.
 
пробовали перед echo делать flush(); ?

зы. также можно использовать яваскрипт.innerHTML вызывая print в пхп-скрипте...
 
Вряд ли в Sypex Dumper Lite используется вариант с буферизацией вывода (ob_start(), flush() и т.п.), т.к. во время продвижения бара браузер не показывает состояние «Загрузка страницы» - страница уже загружена, просто подгружается ее другая часть (такое поведение наблюдается на сайтах, использующих AJAX).
 
  • Заблокирован
  • #8
Вряд ли в Sypex Dumper Lite используется вариант с буферизацией вывода (ob_start(), flush() и т.п.), т.к. во время продвижения бара браузер не показывает состояние «Загрузка страницы» - страница уже загружена, просто подгружается ее другая часть (такое поведение наблюдается на сайтах, использующих AJAX).
Я с вас фигел. "Вряд ли, должно быть" - а посмотреть под рукой браузера нет?

PHP:
</BODY>
</HTML><SCRIPT>l('Подключение к БД `xxxxx`.', 1);</SCRIPT>
<SCRIPT>l('Создание файла с резервной копией БД:<BR>\n &nbsp;- &nbsp;xxxxxx.sql.gz', 1);</SCRIPT>
<SCRIPT>l('------------------------------------------------------------', 1);</SCRIPT>
................
<SCRIPT>s(65,99);</SCRIPT>
<SCRIPT>s(70,99);</SCRIPT>
<SCRIPT>s(76,99);</SCRIPT>
<SCRIPT>s(81,99);</SCRIPT>
<SCRIPT>s(87,99);</SCRIPT>
и т.д. - прямо в теле страницы.
ajax не используется.
 
Наилучший вариант - java script делает запрос к файлу php, который отдаёт процент завершённости, который этот же javascript обрабатывает и отображает.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху