Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2025, 15:11   #11
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,472
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Я подозреваю, что это совсем не то, что нужно автору.
ТС нужно получать актуальные данные с сервера, значит это то что ему нужно.
Других способов кроме колхозных, как в первом посте ТС нет
uberchel вне форума Ответить с цитированием
Старый 09.04.2025, 17:09   #12
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,184
По умолчанию

я вообще подозреваю что автор сам не в курсе - чего хочет и что ему надо ))))
ADSoft вне форума Ответить с цитированием
Старый 09.04.2025, 17:15   #13
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

Цитата:
Сообщение от uberchel Посмотреть сообщение
ТС нужно получать актуальные данные с сервера, значит это то что ему нужно.
Значение конкретной переменной где-то там на сервере совершенно не интересно здесь, в браузере
Arigato вне форума Ответить с цитированием
Старый 10.04.2025, 03:18   #14
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,472
По умолчанию

Цитата:
Сообщение от Arigato Посмотреть сообщение
Значение конкретной переменной где-то там на сервере совершенно не интересно здесь, в браузере
То, что генерирует пхп - это backend, поэтому о каком браузере говоришь ? )
uberchel вне форума Ответить с цитированием
Старый 10.04.2025, 10:27   #15
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

uberchel, так я и говорю, что оно в браузере не интересно. А ТС хотел выводить значение переменной в браузер.
Arigato вне форума Ответить с цитированием
Старый 11.04.2025, 08:07   #16
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,978
По умолчанию

Бывает, что сервер обрабатывает довольно большие объемы информации. На это уходит некоторое время, ждать когда завершит свою работу - неизвестно.
Чтобы примерно знать какую часть информации он обработал, а какую еще нет в данный момент времени, необходимо вывести текущие значения переменных в браузер.
То, что в моем первом посте приведен пример - это всего лишь имитация работы сервера.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 11.04.2025, 13:14   #17
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

newerow1989, надо учитывать, что в большинстве случаев на работу php-скрипта отводится мало времени, секунд 15 или 30. Это настраивается на сервере, но если взять среднестатистический виртуальный хостинг, то там лимиты будут весьма скромными.

Поэтому если требуется обработать большой массив данных, на что уйдет много времени, то лучше проводить эту операцию по частям. Например, вам надо обработать миллиард записей в базе данных, причем обработка одной конкретной записи также не тривиальная задача. Тогда делаем так:

1. Подготовка. Создаем новую сессию для сохранения нужных нам данных между запросами. Сохраняем некий текущий указатель, который будет показывать, где мы остановились в прошлый раз, указатель инициализируем условным нулем (то есть указывает на начало массива данных).
2. Засекаем текущее время.
3. Начинаем обработку с позиции, куда указывает наш указатель.
4. После каждой итерации проверяем, сколько времени прошло с момента начала (пункт 2).
5. Если лимит времени исчерпан (допустим, можно в качестве лимита выбрать 1 секунду), то заканчиваем обработку, текущее значение указателя записываем в переменные сессии, возвращаем в браузер степень завершения процесса (то есть сколько процентов данных было обработано).
6. Если лимит еще не исчерпан, то либо переходим на шаг 4, либо, если все данные уже обработаны, возвращаем браузеру значение 100%.
7. Браузер пользователю визуализирует этот процент (например, в виде продвигающейся полоски прогресса).
8. Если доля не достигла 100%, то браузер повторяет запрос. То есть переходим на шаг 2.

Такой подход позволяет, во-первых, не превысить лимиты времени на сервере, во-вторых, у пользователя не подвиснет страница, будет динамически отображаться степень завершения процесса. Также можете возвращать и любые другие значения, которые хотите пользователю показать во время процесса.
Arigato вне форума Ответить с цитированием
Старый 11.04.2025, 22:04   #18
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 503
По умолчанию

Arigato, помните как в детстве определяли направление ветра? Слюнявили палец и поднимали к верху. Вот примерно так же выглядит Ваш алгоритм приминительно к РНР
Как уже говорили можно применять веб сокеты, но по мне так это излишество в данном случае.
Можно поступить гораздо проще и надёжнее.
Скрипт непрерывно выполняет свою работу (потому что корректность обработки данных гораздо важнее отображения прогресса) и сохраняет значение прогресса в файл, мемкеш, сессию или в БД. Из браузера по таймауту летят запросы к серверу, которые забирают значение прогресса.

Последний раз редактировалось Valick; 11.04.2025 в 22:10.
Valick вне форума Ответить с цитированием
Старый 12.04.2025, 00:18   #19
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,810
По умолчанию

Цитата:
Сообщение от Valick Посмотреть сообщение
Скрипт непрерывно выполняет свою работу
Осталось вам убедить хостера, что это важная работа, а не скрипт просто завис
Arigato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать значение переменной из другого класса? 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