![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| NetFlame |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.3.2006 Где: Москва Репутация: нет Всего: нет |
Здравствуйте.
Есть скрипт, который выполняется по времени минут 5. Во время его выполнения, нужно создать прогресс-бар, который будет по центру монитора пользователя отображать процесс его выполнения. Искал по инету - подходящего ничего не нашел... Скорее всего, тут надо использовать AJAX: скрипт посылает прогресс-бару степень своего выполнения, а прогресс-бар её отображает. Может быть есть уже такой скрипт, или инфа как его сделать? Заранее спс. |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
NetFlame, посылать процент не получится. Клиент может переодически запрашивать процент выполнения. Как его определять -- вам виднее. Как вариант -- запись процента в временный файл. Другой скрипт занимается тем что этот процент читает и отдает клиенту.
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Почему же - как раз в этом случае можно и посылать. Перед началом работы, например, отдать клиенту JS-функцию display_progress (которая и будет заниматься перерисовкой всего, что надо), и время от времени выплевывать куски вида <script>display_progress(новый_процент)</script>, не забывая делать после этого flush(). Конечно, это в предположении, что ничего другого скрипт не выводит - только делает какую-то чисто серверную рутину типа обновления очень большой базы...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| NetFlame |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.3.2006 Где: Москва Репутация: нет Всего: нет |
У меня не очень хорошо с Java, может быть есть какие-то примеры?
|
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
NetFlame примеры с Явой в соответсвующим разделе...
Добавлено через 11 минут если нет вопросов по части РНР, то тему закрю. -------------------- Amazing |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
В простейшем случае можно обойтись и без JS - вместо блоков скрипта "выплевывать" палочки "|", по одной - 100 штук. Чтобы браузер не тупил с их отображением, можно выводить так: 1 палочка - 256 пробелов (а то IE, ЕМНИП, часто не любит перерисовывать страницу ради одного принятого символа). Получится элементарный текстовый прогрессбар. Если его малость стилизовать через CSS и выводить в frame подходящего размера - такое можно будет на первых порах (до лучшего освоения JS ;) использовать на практике...
Это сообщение отредактировал(а) SelenIT - 7.3.2008, 12:55 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
А какой смысл выплевывать куски запроса по очереди? Разве они будут приняты отдельно? По-моему AJAX дождется прихода всего запроса целиком и потом его выдаст. Либо надо делать несколько запросов. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
flashaa, куски не запроса, а ответа - который формируется постепенно и очень долго...
-------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| awers |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1465 Регистрация: 22.3.2006 Где: Россия, Таганрог Репутация: 21 Всего: 31 |
flush(); - прекрасно отдает кусочки, которые прикрасно по одному отображает браузер. проверено.
немного офтопа по js могу посоветовать использовать jQuery. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
SelenIT, да, ответа. Я это имел в виду.
Браузер отображает. Но как - зависит от браузера. По-крайней мере когда выводятся к примеру куски html-кода, то он их кеширует и выдает по мере "построения" сайта из html-кода. Как он работает с текстом - тоже его сугубо личное дело. Не советовал бы на это полагаться. Но если я не прав, то можно пример такого скрипта. Мы говорили про обычный запрос, теперь давайте ближе к делу, а именно - AJAX. Как надо работать на стороне JS, чтобы принять разделенный запрос? Можно код? Не видел других вариантов, кроме как обработка полученного ответа на событие получения ответа. |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
Я про AJAX не говорил, я как раз описывал простейшую синхронную альтернативу. Более того, я вообще сомневаюсь в возможности кроссбраузерной реализации затяжного AJAX-ответа (где-то по статусу loading вроде и есть доступ к данным, но вроде не везде, к тому же Опера, по-моему, дает серверу всего 3 секунды на ответ - не уверен, специально не исследовал, но какие-то обрывки с других форумов в голове остались;).
С AJAXом, конечно же, лучше работать традиционно - долгоиграющий скрипт пусть работает вообще без вывода в фоновом режиме, а AJAX по таймеру опрашивает состояние процесса на сервере и отображает прогресс на момент каждого запроса... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
SelenIT,
в варианте со скриптом -- разве скрипт начнет интерпретироваться до того как будет получен полностью? В варианте с просто отдачей контента мне удалось добится результата только в FF -------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
| flashaa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
На практике не так. А если б и было так, то это серьезный баг, который сразу бы исправили. Таймаут-то xmlhttprequest'у можно выставить произвольный по документации. http://ru.wikipedia.org/wiki/XMLHttpRequest |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
С пробелами "для массовки" или без них? Это хорошо, возможно, мне запомнился баг какой-то конкретной древней версии. Но все равно с обработкой затяжных ответов много нетривиальных браузероспецифичных нюансов. -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| solenko |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1473 Регистрация: 15.1.2006 Где: Украина Репутация: 34 Всего: 67 |
SelenIT, пробовал с пробелами (~50-ти в span'е)
-------------------- Ла-ла-ла-ла Заметьте, нет официального подтверждения, что это не просто четыре слога. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |