Bagaimana cara meneruskan bilah kemajuan scp menggunakan ajax/php?

saya akan

  • memulai pengunduhan (scp [email protected]/tmp/file /backup/) dari browser web
  • ajax (bisa berupa jQuery) permintaan ke server web (suse)
  • dimana php akan menjalankan perintah scp

Apakah ada cara agar pengguna dapat melihat bilah kemajuan pengunduhan scp di browser?


person Radek    schedule 17.08.2011    source sumber


Jawaban (1)


Bukan tanpa banyak main-main.

Dari atas kepala saya, Anda dapat mengarahkan output SCP ke file, kemudian meminta AJAX ke skrip yang mem-parsing file itu, dan ketika baris baru muncul (dengan asumsi scp menambah bilah kemajuannya dengan memisahkan baris dengan \r) skrip PHP keluar dengan cara tertentu yang memerintahkan browser untuk menaikkan bilah kemajuannya, lalu memulai proses AJAX lagi... dan seterusnya hingga scp berakhir.

Saya telah melakukan hal-hal seperti ini sebelumnya, dan menurut saya itu tidak sebanding dengan upaya besar-besaran untuk kebaikan sekecil itu - kecuali Anda merasa belum memiliki cukup hal untuk dilakukan...

Akan lebih mudah untuk melakukan hal seperti ini jika browser mengizinkan Anda membaca ajax.responseText sebelum ajax.readyState == 4, namun mereka tidak melakukannya, jadi sebenarnya tidak.

EDIT

Bayangkan saja pendekatan alternatif untuk hal ini yang mungkin lebih mudah dalam beberapa hal tetapi lebih sulit dalam hal lain:

Jika Anda meletakkan bilah kemajuan di <iframe> Anda tidak perlu melakukan panggilan AJAX dalam jumlah besar, dan Anda dapat melakukan semuanya dengan javascript yang mendorong server - tetapi Anda memerlukan server web yang mendukung ini, dan agak mengandalkan pada browser yang akan menangani pengaturan dengan bijaksana.

person DaveRandom    schedule 17.08.2011