Как переслать прогресс-бар scp с помощью ajax / php? - PullRequest
0 голосов
/ 18 августа 2011

Я собираюсь

  • инициировать загрузку (scp user@remote.computer.com/tmp/file / backup /) из веб-браузера
  • ajax (может быть jQuery) запрос к веб-серверу (suse)
  • , где php выполнит команду scp

IsЕсть ли способ, чтобы пользователь мог видеть в браузере индикатор выполнения загрузки scp?

1 Ответ

3 голосов
/ 18 августа 2011

Не без особых проблем.

В верхней части моей головы вы можете перенаправить вывод SCP в файл, затем запросить AJAX к скрипту, который анализирует этот файл, и при появлении новой строки (при условии, что scp увеличивает его индикатор выполнения, разделяя строки с помощью \ r) PHP-скрипт каким-то образом завершает работу, инструктируя браузер увеличивать индикатор выполнения, затем снова запускать процесс AJAX ... и так далее до тех пор, пока scp не завершится.

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

Было бы намного проще делать подобные вещи, если бы браузеры позволяли вам читать ajax.responseText до ajax.readyState == 4, но они этого не делают, так что нет.

EDIT

Просто подумал об альтернативном подходе к этому, который может быть проще в некоторых отношениях, но труднее в других:

Если вы поместите индикатор выполнения в <iframe>, вам не нужно иметь огромное количество вызовов AJAX, и вы можете сделать все это с помощью javascript на сервере - но вам понадобится веб-сервер, который поддерживает это и в некоторой степени полагаются на браузер, который будет разумно обрабатывать настройки.

...