Воу-воу, господа! Так. Я проникся всем что прочитал. Ещё раз повторю вопрос свой последний. Если я посылаю асинхронный ajax запрос, то до того, как он дойдёт до конца, другие скрипты на странице не будут выполняться, я верно понял? Например, тот же таймер. А если будут, могу ли я параллельно считывать данные из файла. Любого txt файла, например считать строку через 5 секунд после начала выполнения асинхронного ajax запроса?
|
usesa,
просто начитать плясать от печки. Что есть некий индикатор? Этой шкале нужно знать что будем считать и какую величину взять за 100%. Так как и с загрузкой файла, так и загрузкой POST данных проблем не будет - клиент знает размер отправляемых данных, скорость соединения, просчитать и отобразить это на индикаторе не составит труда. Но загрузка ваших десятков тысяч строк, пусть это будет десятки/сотни Кб, это ведь при нормальном соединение малый промежуток времени. Если это отображать, то индикатор застынет где-то у конца. А что ему отображать далее, если клиент понятия не имеет через какое время ответит сервер? А это время у вас может достигать десятки секунд. И что вы собираетесь отображать? Включайте гифку, и весь индикатор тогда. А ведь можно и не ждать. Отправили данные, сервер подтвердил принято, клиент разорвал соединение. Вы как разработчик решаете прерывать ли работу серверного скрипта или нет. Можно продолжать работу, обрабатывая данные, можно их поставить в задачу для cron. Это не столь важно. Главное, что если обрабатываются строки и обрабатываются в цикле, то серверный сценарий уж точно может знать сколько ему по времени/процентах еще работать. Следовательно он может писать статус своей работы, а клиент после отправки данных уже в фоновом режиме опрашивает этот статус каждую секунду, отображая тот самый прогресс работы, который вы так хотите. |
Цитата:
Запрос потому и асинхронный, что функция ответа выполняется по событию. Пока этого события нет, все работает как обычно. Учи прерывания. Времеми на ожидание ответа тебе за глаза хватит. Посылай по одной строке и все будет меееедленно. Цитата:
Устроено вот так. 1 Сделали объект 2 Запрограммировали событие ответа = функция 3 Сделали запрос Все. Теперь когда ответ придет, та самая функция его и получит, когда придет. Обработает и запустит все снова, с строки 1. https://developer.mozilla.org/en-US/...XMLHttpRequest В лайбах вроде жиквери все уже уютненько. |
Цитата:
|
Цитата:
Не пудри читателю мозг. У него банальная задача сделать очередь загрузки аяксом. Есть 10К строк, он поделил на 100, получил 100, отгрузил 100, php обработал, что-то там сохранил, ответил 200 ОК и закрылся. Браузер получил, передал в скрипт, скрипт сдвинул прогресс на 1%, взял следующие 100, отгрузил 100, php обработал, что-то там сохранил, ответил 200 ОК и так далее пока строки не кончатся. По 100 уезжает, по 1% продвигается. Элементарно. Просто сервер придется дергать 100 раз. Ну и что? Он все равно железный. |
Если ты открываешь страницу на которой 100 фоток, то сервер будет дернут 100 раз. Ну и пусть дергается хоть на каждую строку. Это же явно административная задача.
|
Цитата:
Ну и главное, раз в секунду. То есть 60 раз в минуту дрыгать php, поднимать параллельный процесс, чтобы только файлик прочесть. Запросы по таймеру делаются когда данные поступают случайно и неизвестно откуда, скажем кто-то тебе написал привет, а он еще на сервере. В случае ТС данные конкретно все у него и все известно заранее. Сценарий выше. |
Поскольку ТС не колется о конкретике, то можно предполагать плохое. Например если для обработки важно получить все данные, какая-то статистика. Тогда прогресс будет показывать просто исход очереди на сервер, что и без таймеров заметно рендерится. Когда все строки из очереди отгрузятся, сервер запустит процесс обработки и тогда уже понадобится гифка с сиськами.
Вообще такая хрень через html не делается. Для этого есть shell и bash. Открыл консоль, запустил процесс и пялься себе на экран, смотри как он идет во всех подробностях. |
Цитата:
Плыви мимо, опять написал поноса на целый роман. |
Так-то рацзерно есть в мыслях у вас, судари. Но разбивать запрос поэтапно не выйдет хотя бы потому что строки сравниваются на потенциальные дубли и прочее. Не вижу возможности разбивать запрос порционно. Поэтому и ищу возможность выводить данные в процессе работы скрипта.
|
Часовой пояс GMT +3, время: 01:30. |