![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| stalker2000 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.7.2010 Репутация: нет Всего: нет |
Добрый день.
Пишу некий скрипт (пхп), обрабатывающий поисковые запросы. Юзер скармливает в форму несколько сотен таких запросов и потом грустно смотрит на пустой экран браузера в ожидании результата.... Стоит задача облегчить ему жизнь путём вывода строки "обработано n из m". Делать это, видимо, лучше с помощью ajax и jquery. Сразу после <body> я добавил блок <div id="progress-label">Обработка...</div>, в который через нехитрую функцию
каждые полсекунды скрипт show_progress.php пишет искомый прогресс. Функция работает, но содержимое блока не обновляется, пока главный скрипт полностью не отработает. Только после этого в блоке прогресса я вижу "Обработано 100 из 100", а в процессе работы там написано "Обработка...". Подскажите, можно ли сделать динамическое обновление содержимого прогресс-блока до окончания загрузки страницы? Может быть надо сделать вообще как-то иначе? |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Запросы бывают синхронными, и асинхронными. Что вы вкладываете в понятие "главный скрипт"? И почему его нет в вашем комментарии?
И еще я надеюсь вы же не забыли про очистку интервала, когда n станет равным m? |
|||
|
||||
| stalker2000 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.7.2010 Репутация: нет Всего: нет |
Главный скрипт переваривает данные, которые получил от пользователя. Его нет, потому что он большой. Результирующий код выглядит примерно так:
По мере обработки скрипт дописывает в таблицу строки с результатами. Как я писал, на это уходит много времени. Т.е. страница получается недосформированной до самого конца работы скрипта.
Нет, интервал всё время обнуляется, тут всё в порядке. Это сообщение отредактировал(а) stalker2000 - 31.7.2014, 14:35 |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
А что содержится в show_progress.php? То есть каким образом там идет подсчет значений интервала?
|
|||
|
||||
| stalker2000 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.7.2010 Репутация: нет Всего: нет |
Подсчёт можно сделать любым удобным образом. Я сделал так: основной скрипт пишет в базу кол-во обработанных запросов и общее кол-во, скрипт show_progress.php при запуске просто показывает эти два числа. Подумав на свежую голову, решил, что проще будет просто динамически дописывать значения в таблицу вот таким образом. Кроме того, пришел к выводу что задача изначально была поставлена неверно. Бегло посмотрев html-код загрузки gmail, я решил что либо после прогрессбара происходит редирект на следующую страницу, либо в какой-то блок происходит вывод уже готового содержимого. Но это никак не делается именно в процессе загрузки страницы... Именно отсюда и нужно было плясать... |
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
stalker2000, А какие проблемы то? Технология проста и называется ajax.
Основной скрипт пишет в таблицу свой прогресс. Основной скрипт запускается неведомым нам образом, но это и не особенно важно. show_projress. обязан вывести состояние этого самого основного скрипта. show_progress.json.php - имя изменено, для пущего визуального эффекта.
Скрипт в главном скрипте выглядит примерно так...
Ну и хитрость. Основной скрипт, который выполняет работы, обязан освободить сессию. session_write_close(); перед основным циклом Без этого файл с сессией будет заблокирован и все запросы в ту же сессию будут висеть до скончания работы. Это сообщение отредактировал(а) ksnk - 4.8.2014, 17:05 -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| stalker2000 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 53 Регистрация: 29.7.2010 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |