Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Progress Bar, Для отображения хода выполнения скрипта 
V
    Опции темы
NetFlame
  Дата 7.3.2008, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



Здравствуйте.

Есть скрипт, который выполняется по времени минут 5. Во время его выполнения, нужно создать прогресс-бар, который будет по центру монитора пользователя отображать процесс его выполнения. Искал по инету - подходящего ничего не нашел...
Скорее всего, тут надо использовать AJAX: скрипт посылает прогресс-бару степень своего выполнения, а прогресс-бар её отображает.

Может быть есть уже такой скрипт, или инфа как его сделать?

Заранее спс.
PM MAIL WWW ICQ   Вверх
solenko
Дата 7.3.2008, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



NetFlame, посылать процент не получится. Клиент может переодически запрашивать процент выполнения. Как его определять -- вам виднее. Как вариант -- запись процента в временный файл. Другой скрипт занимается тем что этот процент читает и отдает клиенту. 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
SelenIT
Дата 7.3.2008, 01:17 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Почему же - как раз в этом случае можно и посылать. Перед началом работы, например, отдать клиенту JS-функцию display_progress (которая и будет заниматься перерисовкой всего, что надо), и время от времени выплевывать куски вида <script>display_progress(новый_процент)</script>, не забывая делать после этого flush(). Конечно, это в предположении, что ничего другого скрипт не выводит - только делает какую-то чисто серверную рутину типа обновления очень большой базы...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
NetFlame
Дата 7.3.2008, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 316
Регистрация: 8.3.2006
Где: Москва

Репутация: нет
Всего: нет



У меня не очень хорошо с Java, может быть есть какие-то примеры?
PM MAIL WWW ICQ   Вверх
MoLeX
Дата 7.3.2008, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



NetFlame примеры с Явой в соответсвующим разделе...

Добавлено через 11 минут
если нет вопросов по части РНР, то тему закрю.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
SelenIT
Дата 7.3.2008, 12:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



В простейшем случае можно обойтись и без JS - вместо блоков скрипта "выплевывать" палочки "|", по одной - 100 штук. Чтобы браузер не тупил с их отображением, можно выводить так: 1 палочка - 256 пробелов (а то IE, ЕМНИП, часто не любит перерисовывать страницу ради одного принятого символа). Получится элементарный текстовый прогрессбар. Если его малость стилизовать через CSS и выводить в frame подходящего размера - такое можно будет на первых порах (до лучшего освоения JS ;) использовать на практике...

Это сообщение отредактировал(а) SelenIT - 7.3.2008, 12:55


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
flashaa
Дата 7.3.2008, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(SelenIT @  7.3.2008,  01:17 Найти цитируемый пост)
Почему же - как раз в этом случае можно и посылать. Перед началом работы, например, отдать клиенту JS-функцию display_progress (которая и будет заниматься перерисовкой всего, что надо), и время от времени выплевывать куски вида <script>display_progress(новый_процент)</script>, не забывая делать после этого flush(). Конечно, это в предположении, что ничего другого скрипт не выводит - только делает какую-то чисто серверную рутину типа обновления очень большой базы... 

А какой смысл выплевывать куски запроса по очереди? Разве они будут приняты отдельно? По-моему AJAX дождется прихода всего запроса целиком и потом его выдаст. Либо надо делать несколько запросов.
PM MAIL   Вверх
SelenIT
Дата 7.3.2008, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



flashaa, куски не запроса, а ответа - который формируется постепенно и очень долго...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
awers
Дата 7.3.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



flush(); - прекрасно отдает кусочки, которые прикрасно по одному отображает браузер. проверено.

немного офтопа по js могу посоветовать использовать jQuery.
PM MAIL WWW ICQ Skype   Вверх
flashaa
Дата 7.3.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



SelenIT, да, ответа. Я это имел в виду.
Цитата(awers @  7.3.2008,  15:00 Найти цитируемый пост)
flush(); - прекрасно отдает кусочки, которые прикрасно по одному отображает браузер. проверено.

Браузер отображает. Но как - зависит от браузера. По-крайней мере когда выводятся к примеру куски html-кода, то он их кеширует и выдает по мере "построения" сайта из html-кода. Как он работает с текстом - тоже его сугубо личное дело. Не советовал бы на это полагаться. Но если я не прав, то можно пример такого скрипта.
Мы говорили про обычный запрос, теперь давайте ближе к делу, а именно - AJAX. Как надо работать на стороне JS, чтобы принять разделенный запрос? Можно код? Не видел других вариантов, кроме как обработка полученного ответа на событие получения ответа.
PM MAIL   Вверх
SelenIT
Дата 7.3.2008, 15:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Я про AJAX не говорил, я как раз описывал простейшую синхронную альтернативу. Более того, я вообще сомневаюсь в возможности кроссбраузерной реализации затяжного AJAX-ответа (где-то по статусу loading вроде и есть доступ к данным, но вроде не везде, к тому же Опера, по-моему, дает серверу всего 3 секунды на ответ - не уверен, специально не исследовал, но какие-то обрывки с других форумов в голове остались;).

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


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
solenko
Дата 7.3.2008, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



SelenIT, 
в варианте со скриптом -- разве скрипт начнет интерпретироваться до того как будет получен полностью?
В варианте с просто отдачей контента мне удалось добится результата только в FF


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
flashaa
Дата 7.3.2008, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(SelenIT @  7.3.2008,  15:52 Найти цитируемый пост)
Опера, по-моему, дает серверу всего 3 секунды на ответ

На практике не так. А если б и было так, то это серьезный баг, который сразу бы исправили. Таймаут-то xmlhttprequest'у можно выставить произвольный по документации. http://ru.wikipedia.org/wiki/XMLHttpRequest
PM MAIL   Вверх
SelenIT
Дата 7.3.2008, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Цитата(solenko @  7.3.2008,  15:55 Найти цитируемый пост)
разве скрипт начнет интерпретироваться до того как будет получен полностью?
Насколько я знаю, интерпретируется поблочно, так что полученные целиком блоки, если не обращаются к еще не созданным элементам, вполне работоспособны до получения последующих.
Цитата(solenko @  7.3.2008,  15:55 Найти цитируемый пост)
В варианте с просто отдачей контента...
С пробелами "для массовки" или без них?

Цитата(flashaa @  7.3.2008,  16:02 Найти цитируемый пост)
На практике не так.
Это хорошо, возможно, мне запомнился баг какой-то конкретной древней версии. Но все равно с обработкой затяжных ответов много нетривиальных браузероспецифичных нюансов.


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
solenko
Дата 7.3.2008, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



SelenIT, пробовал с пробелами (~50-ти в span'е)


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0616 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.