AJAX - извлечение данных из долгих звонков на сервер - PullRequest
1 голос
/ 01 ноября 2010

В длинных серверных процессах сервер может постепенно писать ответы, например:

Копирование 100 файлов завершено,

через 10 секунд:

Архивирование файлов завершено,

через 30 секунд:

Удаление временных файлов завершено,

и ....

Возможно ли получить этот поток до завершения ajax и показать его пользователю?

Ответы [ 3 ]

3 голосов
/ 01 ноября 2010

Похоже, вы ищете длинный опрос .Вы также можете прочитать о шаблоне Comet .Я также только что ответил на вопрос несколько минут назад, который касается подобных вопросов.

0 голосов
/ 01 ноября 2010

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

Единственный способ пройти несколько опросов статуса.

Но в зависимости от того, как работает ваш сервер, могут возникнуть некоторые причуды.

Например, IIS использует только один поток на сеанс, поэтому два одновременных вызова от одного и того же клиента будут обрабатываться один за другим.

Если вы опубликовали что-то с ajax или iframe, для обработки которого требуется время, например, для загрузки файла, тогда этот вызов заблокирует сеанс, и любая страница состояния должна быть без сеанса, чтобы иметь возможность отвечать напрямую.

0 голосов
/ 01 ноября 2010

Вы можете использовать два асинхронных обратных вызова. Один для выполнения обработки (удаления файлов или чего-либо еще), которая обновляет значение переменной сеанса (количество удаленных файлов).Другой асинхронный обратный вызов может проверить значение этой переменной сеанса в течение установленного периода времени ожидания и затем соответствующим образом обновить графический интерфейс,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...