จะส่งต่อแถบความคืบหน้าของ scp โดยใช้ ajax / php ได้อย่างไร

ฉันกำลังจะไปที่

  • เริ่มต้นดาวน์โหลด (scp [email protected]/tmp/file /backup/) จากเว็บเบราว์เซอร์
  • ajax (อาจเป็น jQuery) คำขอไปยังเว็บเซิร์ฟเวอร์ (suse)
  • โดยที่ php จะรันคำสั่ง scp

มีวิธีใดบ้างที่ผู้ใช้สามารถเห็นแถบความคืบหน้าการดาวน์โหลด scp ในเบราว์เซอร์?


person Radek    schedule 17.08.2011    source แหล่งที่มา


คำตอบ (1)


โดยไม่ต้องวุ่นวายอะไรมากมาย

จากด้านบนของหัวของฉัน คุณสามารถเปลี่ยนเส้นทางเอาต์พุตของ SCP ไปยังไฟล์ได้ จากนั้นให้ร้องขอ AJAX ไปยังสคริปต์ที่แยกวิเคราะห์ไฟล์นั้น และเมื่อมีบรรทัดใหม่ปรากฏขึ้น (สมมติว่า scp เพิ่มขึ้น มันเป็นแถบความคืบหน้าโดยแยกบรรทัดด้วย \r) สคริปต์ PHP ออกด้วยวิธีใดวิธีหนึ่งโดยสั่งให้เบราว์เซอร์เพิ่มแถบความคืบหน้า จากนั้นเริ่มต้นกระบวนการ AJAX อีกครั้ง... และต่อไปเรื่อย ๆ จนกว่า scp ยุติ

ฉันเคยทำอะไรแบบนี้มาก่อน และฉันจะบอกว่ามันไม่คุ้มค่ากับความพยายามครั้งใหญ่เพื่อสิ่งเล็กๆ น้อยๆ เช่นนี้ เว้นแต่คุณจะรู้สึกว่าคุณมีไม่เพียงพอที่จะทำ...

มันจะง่ายกว่ามากที่จะทำสิ่งนี้หากเบราว์เซอร์อนุญาตให้คุณอ่าน ajax.responseText ก่อน ajax.readyState == 4 แต่ไม่อนุญาต ดังนั้นจึงไม่เป็นเช่นนั้น

แก้ไข

แค่คิดถึงแนวทางอื่นสำหรับสิ่งนี้ที่อาจง่ายกว่าในบางวิธี แต่ยากกว่าในวิธีอื่น:

หากคุณใส่แถบความคืบหน้าใน <iframe> คุณไม่จำเป็นต้องมีการโทร AJAX จำนวนมาก และคุณสามารถทำได้ทั้งหมดโดยใช้จาวาสคริปต์ที่พุชจากเซิร์ฟเวอร์ - แต่คุณจะต้องมีเว็บเซิร์ฟเวอร์ที่รองรับสิ่งนี้ และค่อนข้างจะพึ่งพา บนเบราว์เซอร์ที่จะจัดการการตั้งค่าอย่างสมเหตุสมผล

person DaveRandom    schedule 17.08.2011