![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Участник клуба
Регистрация: 19.01.2009
Сообщений: 1,472
|
![]() |
![]() |
![]() |
![]() |
#12 |
Старожил
Регистрация: 25.02.2007
Сообщений: 4,184
|
![]()
я вообще подозреваю что автор сам не в курсе - чего хочет и что ему надо ))))
|
![]() |
![]() |
![]() |
#13 | |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]() Цитата:
![]() E-Mail: arigato.freelance@gmail.com
|
|
![]() |
![]() |
![]() |
#14 |
Участник клуба
Регистрация: 19.01.2009
Сообщений: 1,472
|
![]() |
![]() |
![]() |
![]() |
#15 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
uberchel, так я и говорю, что оно в браузере не интересно. А ТС хотел выводить значение переменной в браузер.
E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#16 |
Я самый любопытный
Участник клуба
Регистрация: 24.07.2012
Сообщений: 1,978
|
![]()
Бывает, что сервер обрабатывает довольно большие объемы информации. На это уходит некоторое время, ждать когда завершит свою работу - неизвестно.
Чтобы примерно знать какую часть информации он обработал, а какую еще нет в данный момент времени, необходимо вывести текущие значения переменных в браузер. То, что в моем первом посте приведен пример - это всего лишь имитация работы сервера. |
![]() |
![]() |
![]() |
#17 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
newerow1989, надо учитывать, что в большинстве случаев на работу php-скрипта отводится мало времени, секунд 15 или 30. Это настраивается на сервере, но если взять среднестатистический виртуальный хостинг, то там лимиты будут весьма скромными.
Поэтому если требуется обработать большой массив данных, на что уйдет много времени, то лучше проводить эту операцию по частям. Например, вам надо обработать миллиард записей в базе данных, причем обработка одной конкретной записи также не тривиальная задача. Тогда делаем так: 1. Подготовка. Создаем новую сессию для сохранения нужных нам данных между запросами. Сохраняем некий текущий указатель, который будет показывать, где мы остановились в прошлый раз, указатель инициализируем условным нулем (то есть указывает на начало массива данных). 2. Засекаем текущее время. 3. Начинаем обработку с позиции, куда указывает наш указатель. 4. После каждой итерации проверяем, сколько времени прошло с момента начала (пункт 2). 5. Если лимит времени исчерпан (допустим, можно в качестве лимита выбрать 1 секунду), то заканчиваем обработку, текущее значение указателя записываем в переменные сессии, возвращаем в браузер степень завершения процесса (то есть сколько процентов данных было обработано). 6. Если лимит еще не исчерпан, то либо переходим на шаг 4, либо, если все данные уже обработаны, возвращаем браузеру значение 100%. 7. Браузер пользователю визуализирует этот процент (например, в виде продвигающейся полоски прогресса). 8. Если доля не достигла 100%, то браузер повторяет запрос. То есть переходим на шаг 2. Такой подход позволяет, во-первых, не превысить лимиты времени на сервере, во-вторых, у пользователя не подвиснет страница, будет динамически отображаться степень завершения процесса. Также можете возвращать и любые другие значения, которые хотите пользователю показать во время процесса. E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 27.04.2022
Сообщений: 503
|
![]()
Arigato, помните как в детстве определяли направление ветра? Слюнявили палец и поднимали к верху. Вот примерно так же выглядит Ваш алгоритм приминительно к РНР
![]() Как уже говорили можно применять веб сокеты, но по мне так это излишество в данном случае. Можно поступить гораздо проще и надёжнее. Скрипт непрерывно выполняет свою работу (потому что корректность обработки данных гораздо важнее отображения прогресса) и сохраняет значение прогресса в файл, мемкеш, сессию или в БД. Из браузера по таймауту летят запросы к серверу, которые забирают значение прогресса.
стимулятор https://yoomoney.ru/to/41001303250491
Последний раз редактировалось Valick; 11.04.2025 в 22:10. |
![]() |
![]() |
![]() |
#19 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,810
|
![]()
Осталось вам убедить хостера, что это важная работа, а не скрипт просто завис
![]() E-Mail: arigato.freelance@gmail.com
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как узнать значение переменной из другого класса? | AlenaShA | Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) | 0 | 14.11.2017 09:27 |
узнать текущее положение slider control | enjo | Win Api | 7 | 28.11.2012 19:43 |
Как в макросе указывать текущее значение ячейки. | Nick_odessa | Microsoft Office Excel | 2 | 04.04.2012 16:37 |
Как в Delphi узнать текущее UTC время (now)? | Anfall | Общие вопросы Delphi | 6 | 28.10.2010 14:13 |
Где узнать текущее разрешение экрана? | Teksa | Помощь студентам | 2 | 07.09.2007 17:19 |