![]() |
Странички отражающие процесс
Народ!
Расскажите мне как эта хрень работает, и что нужно сделать? Я так понимаю, что когда юзер обращается на веб-сервер тот организовывает сессию (поток) и закрывает его тогда, когда полностью ответил пользователю (переслал страничку например). А если пользователь обратился к серверу (передал данные какие-то) и тот должен показать страничку с ходом выполнения (в процентах). В данном случае, я так понимаю, после передачи странички сессия не закрывается, а закрывается когда полностью процесс выполнен. Как в таком случае мне заставить браузер (а может и сервер) обновлять страничку через какое-то время (например каждые 5 сек.)? Спасибо. |
Himan
Имхо, на html/dhtml ты такого не сделаешь. Везде, где я видел разного розда реализации, суть была в том, что просто вешалась анимированная гифка с прогресс баром, которая после загрузки заменялась на реальные загруженные данные. Сделать это можно с помощью двух div-ов, но, естественно, этот прогресс бар реальный прогресс загрузки не отображает. Реальные же счетчики я видел только реализованные на флеше. |
Меня собственно не сам прогресс бар интересует и в общем-то и не загрузка страницы... Допустим сервер должен что-то сделать, например переписать с одного места пачку файлов в другое. Пользователь обращается на ссылку и сервер принимается за работу, а впроцессе работы скидывает в браузер странички, отражающие ход выполнения (выполнено то-то...). Я знаю что в ХТМЛ-е есть какие-то теги, указывающие время перезагрузки. Но тогда возникает вопрс, а как сервер пределяет что это именно тот юзер (без куков). Выходит сервер сессию не закрывает, а как-то постянн скидывает страницы. Так вот меня интересует сам механизм и какую страницу (какие тэги) должен сервак передавать?:confused:
|
Himan
Это можно легко сделать в рамках _одной_ страницы. По мере выполнения задачи сервер будет выдавать html-код на страницу, который так же постепенно будет на ней появляться. К примеру, если на пхп это делать: PHP код:
А если тебе нужно именно на _нескольких_ страницах последовательно прогресс показать - то тут выход один - разбивать скрипт на несколько скриптов. |
2 Saruman: Браузер с таких случаях часто выходит на таймаут (для IE - 60 сек. по умолчанию).
PS: А делается все предельно просто. И способов хватает. Самый простой из них (HTML/JS/DOM) это скрытый auto-refresh фрейм. Из него основная страница и считывает те самые проценты (или другие единицы), на основании которых рисуется полоска (если она вообще рисуется). |
RaZEr
Если что-то в него выдавать периодически - не выходит. У меня так логи процессов по 20-30 минут спокойно работали, постоянно что-то выдавая в браузер. Под IE. Насчет других браузеров - не знаю. |
Saruman
это зависит от типа стрима...... и от настроек |
Спасибо за отзывы, но не могли бы вы мне накалякать пару примеров. Дело в том, что я не большой спец в ХТМЛ и ДжСкрипте. Вот например итересен пример с логами.
|
пишем так:
PHP код:
|
Код:
<html> |
и что должно происходить? я пока вижу только ошибки в броузере, жалобы на отсутствие обьектов и прочую дрянь... :confused:
Добавлено через 1 минуту: хоть бы комментировал как-то..... представляешь я щас кусок кода в 30 кб сюда всуну и скажу, что работает, как к этому отнесуться? одно дело, если он действительно работает, и всем влом в нем ковыряться, а другое - если нет. |
мда.... мне даже в облом его в хтмл скопировать
|
да в глазах рябит... от таких скриптов с непонятных страниц
|
Это мне попалось за пару чаоос до того, как я эту тему увидел. Явоский програссбар пробегает, после чего отображается страница.
|
т.е. он просто так пробегает)) для понту, мол, типа грузимся+) что -то типа первого прогресс бара в инсталлшилде 99-м =) сразу так от 0 до 99% а дальше висюк=)
|
да нет вроде он в зависимоти от прогресса загрузки картинок кажет
но не проверял Добавлено через 47 минут: нет всётаки он не отражает действительный статус загрузки картинок.. а жаль.. что не прошол испытаний... может подправит кто.. |
Часовой пояс GMT +4, время: 21:29. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.