powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php - визуализация ожидания выполнения операции
8 сообщений из 8, страница 1 из 1
php - визуализация ожидания выполнения операции
    #39770559
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
собственно, что хотелось бы. POST отправляет на сервер запрос со страницы. в зависимости от параметров страница может готовиться не быстро. Как пользователю визуально дать понять, что про него не забыли и страница сейчас явится?
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770582
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Минимально можно повесить анимированную гифку, где изображение крутится, двигается, переливается разными цветами и т.п. Другой момент, что запрос или процесс может тупо срубиться на сервере, а картинка так и будет вещать "не забыли". Ну, тут, можно через какой-то промежуток времени по таймеру вывести "ой, звиняйте, что-то пошло не так".
Если же время ожидания предполагается достаточно долгое (десятки секунд) и есть возможность отследить реальный процесс подготовки контента, то можно и настоящий прогрессбар с процентами или этапами выполнения отрисовать.
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770595
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
хм. возможно бестолково объяснил.
есть у меня страница регистрации. пользователь заполняет нужные параметры и жмет "зарегистрироваться". форма уходит на сервер, там обрабатывается (в там есть код php , состояние работы которого (типа я жив) и нужно показывать пользователю. таймаут - тут вообще история. где его отслеживать? на серваке - бессмысленно, а на клиенте - так и вовсе нет пока документа.
или жестко ошибаюсь где-то?
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770619
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
waszkiewicz,

Давайте сперва определимся, что такое "я жив", какими оно обладает признаками. Наверняка, у Вас есть какое-то свое представление о том, что такое "я жив" и по совокупности каких признаков оно отличается от "он помер", "он завис". Если эти признаки возможно четко определить и оценить программными методами - то задача наполовину решена.

Например, это может быть какой-то процесс с некоторым PID (где взять и как хранить - вопрос другой). Ну а почему нет то? Если процесс (завис или работает - без разницы) с заданным PID есть и это процесс именно этого скрипта - считаем, что жив. Нет процесса или PID занят каким-то другим процессом - мертв. Подходит такой вариант? Наверно, как-то не очень хорошо.

Ладно, ещё вариант, о котором упомянул выше. Скрипт что-то делает. Условно, его работу можно поделить на этапы. Например, первый этап с максимально допустимым временем выполнения 7 секунд, второй этап максимум 18 секунд, третий 10 секунд и т.д. В начале работы скрипт сохраняет первую метку времени (в базе, в сессии и т.п.). После каждого этапа скрипт добавляет новую метку. По запросу от клиента или ещё откуда можно проверить количество меток (определить номер текущего этапа) и по разнице времени от текущего времени до последней метки определить, укладывается ли текущий этап в отведенное для него время. Укладывается - считаем что жив, иначе - мертв. Подходит такой вариант? Ну, не знаю. Всё же, время работы скрипта может кратно меняться в зависимости от туева хучи факторов (загрузка процессора, памяти, запросов к СУБД и ее загрузки, загруженности ФС/дисков и т.п.).

Что касается отображения на клиенте, так это следующий вопрос. Пока нет признака, нечего и отображать.
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770636
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
выходит, вариант такой. POST на страничку с "прогрессом" или "ожидателем", где ставим в очередь задание и передаем туда параметры. js делаем ajax синхронный, где вычитываем статус этого задания (пока статус не равен ОК или таймаут не наступил) и в колбэк делаем редирект на страницу боли и печали (если все плохо) или на нужную?
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770638
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
waszkiewicz,
только одно но - нужно очередь в реальном времени организовывать
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770652
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
waszkiewicz,

Да, как-то так. Каких-то существенных проблем для реального времени в первом приближении не вижу. Передали параметры для основной работы, запустили таймер. По таймеру сделали ajax для проверки статуса, вывели результат, запустили таймер и так по кругу, пока не придет ответ от рабочего запроса. Ну это как вариант, конечно.
Только один момент. Проверочный ajax-запрос тоже ж может срубиться, а потому, делать ли его синхронным... это надо подумать.
...
Рейтинг: 0 / 0
php - визуализация ожидания выполнения операции
    #39770763
Програмёр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ошибаться, но также можно попробовать кинуть самый обычный XMLHttpRequest, на стороне сервера отключить буферизацию вывода и отправлять в поток результат выполнения этапов, а на клиенте как только статус запроса будет переведён в loading повесить таймер и по этому таймеру смотреть переменную с ответом сервера (которая по ходу выполнения будет наполняться данными) и исходя из этого менять прогрессбар.

Но сам не пробовал, хотя в теории вроде должно работать :) Но, разумеется, это накладывает ограничение на очерёдность выполнения кода на сервере. При таком подходе заголовки обязательно должны быть отправлены до основного текста, потому подойдёт далеко не каждому...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / php - визуализация ожидания выполнения операции
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]