ในการสั่งซื้อเพื่อหลีกเลี่ยงสถานการณ์ที่คุณสามารถใช้--, -K/s
--read-timeout=seconds
การทำเช่นนี้จะหมดเวลาการเชื่อมต่อหลังจากจำนวนวินาที
หากคุณต้องการทำมากกว่านั้นคุณสามารถใช้การตั้งค่านี้
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0
การดำเนินการนี้จะลองปฏิเสธการเชื่อมต่อและข้อผิดพลาดร้ายแรงที่คล้ายกัน( --retry-connrefused
) จะรอ 1 วินาทีก่อนลองอีกครั้ง ( --waitretry
) จะรอสูงสุด 20 วินาทีในกรณีที่ไม่มีการรับข้อมูลจากนั้นลองอีกครั้ง ( --read-timeout
) จะรอสูงสุด 15 วินาที ก่อนการเชื่อมต่อเริ่มต้นหมดเวลา ( --timeout
) และในที่สุดมันจะลองอีกครั้งโดยไม่มีที่สิ้นสุดจำนวนครั้ง ( -t 0
)
คุณอาจต้องการใส่สิ่งนี้ไว้ในwhile
ลูปเพื่อหลีกเลี่ยงความล้มเหลวของเครือข่ายในพื้นที่และในลักษณะเดียวกัน ในกรณีนี้คุณต้องเพิ่ม--continue
เพื่อดำเนินการดาวน์โหลดต่อจากที่ค้างไว้ ต่อไปนี้ทำงานได้ดีใน Bash
while [ 1 ]; do
wget --retry-connrefused --waitretry=1 --read-timeout=20 --timeout=15 -t 0 --continue
if [ $? = 0 ]; then break; fi; # check return value, break if successful (0)
sleep 1s;
done;
เป็นเคล็ดลับโบนัสที่คุณสามารถใช้--no-dns-cache
ในกรณีที่โฮสต์ยอดคงเหลือคำขอของคุณระหว่างเซิร์ฟเวอร์หลายเครื่องโดย DNS
ข้อจำกัดความรับผิดชอบ: ฉันไม่แนะนำให้ใช้สิ่งนี้เนื่องจากมันจะทำการโฮสต์ในกรณีที่การเชื่อมต่อไม่เสถียรและมันไม่ฉลาดที่จะปล่อยให้มันไม่ถูกตรวจสอบ อย่างไรก็ตามนี่คือสิ่งที่คุณต้องการในกรณีที่คุณต้องการดาวน์โหลดบางสิ่งบางอย่างและการเชื่อมต่อของคุณไม่ทำงานอย่างเพียงพอ
--read-timeout=900
โดยค่าเริ่มต้น คุณสามารถรอ 15 นาทีและ wget จะเริ่มการดาวน์โหลดใหม่