WGET có hết thời gian chờ không?


83

Tôi đang chạy một tập lệnh PHP thông qua cron bằng Wget, với lệnh sau:

wget -O - -q -t 1 http://www.example.com/cron/run

Tập lệnh sẽ mất tối đa 5-6 phút để xử lý. WGet sẽ đợi nó và cho nó tất cả thời gian nó cần, hay nó sẽ hết thời gian?

Câu trả lời:


145

Theo trang người dùng của wget , có một số tùy chọn liên quan đến thời gian chờ - và có thời gian chờ đọc mặc định là 900 giây - vì vậy tôi nói rằng, vâng, nó có thể hết thời gian chờ.


Dưới đây là các tùy chọn được đề cập:

-T seconds
--timeout=seconds

Đặt thời gian chờ của mạng thành giây giây. Đây là tương đương với việc xác định --dns-timeout, --connect-timeout--read-timeout, tất cả cùng một lúc.


Và đối với ba tùy chọn đó:

--dns-timeout=seconds

Đặt thời gian chờ tra cứu DNS thành giây giây.
Việc tra cứu DNS không hoàn tất trong thời gian quy định sẽ không thành công.
Theo mặc định, không có thời gian chờ khi tra cứu DNS, ngoài thời gian chờ do thư viện hệ thống triển khai.

--connect-timeout=seconds

Đặt thời gian chờ kết nối thành giây giây.
Các kết nối TCP mất nhiều thời gian hơn để thiết lập sẽ bị hủy bỏ.
Theo mặc định, không có thời gian chờ kết nối, ngoài thời gian chờ được thực hiện bởi các thư viện hệ thống.

--read-timeout=seconds

Đặt thời gian chờ đọc (và ghi) thành giây giây.
"Thời gian" của thời gian chờ này đề cập đến thời gian không hoạt động: nếu, tại bất kỳ thời điểm nào trong quá trình tải xuống, không có dữ liệu nào được nhận trong hơn số giây được chỉ định, việc đọc không thành công và quá trình tải xuống được khởi động lại.
Tùy chọn này không ảnh hưởng trực tiếp đến thời lượng của toàn bộ quá trình tải xuống.


Tôi cho rằng sử dụng một cái gì đó như

wget -O - -q -t 1 --timeout=600 http://www.example.com/cron/run

nên đảm bảo không có thời gian chờ lâu hơn thời lượng tập lệnh của bạn.

(Vâng, đó có lẽ là giải pháp tàn bạo nhất có thể ^^)


nếu tôi đặt -t 0 thì nó có đợi vô thời hạn không?
Nhấp vào ủng hộ

4
Các -ttùy chọn có vẻ là một bí danh của --tries, mà Set số lần thử lại để số. ;;; Nó dường như không liên quan đến bất kỳ loại thời gian chờ nào, nhưng với số lần wget sẽ cố gắng tải xuống lại nếu có lỗi - và bạn có thể không muốn thời gian chờ bị coi là lỗi và tập lệnh đang được gọi lại.
Pascal MARTIN

31
--timeout = 0 sẽ vô hiệu hóa thời gian chờ
MiniScalope

Tôi có lẽ là người trên hành tinh nhưng đối với ubuntu 16, wget chỉ bỏ qua các giá trị cho --timeout. Có lẽ vì tôi đang sử dụng auth cơ bản trong lệnh
Kirill Oficerov

35

Thời gian chờ mặc định là 900 giây. Bạn có thể chỉ định thời gian chờ khác nhau.

-T seconds
--timeout=seconds

Mặc định là thử lại 20 lần. Bạn có thể chỉ định các lần thử khác nhau.

-t number
--tries=number

liên kết: wget man document


7

Vì trong câu hỏi của bạn, bạn đã nói rằng đó là một tập lệnh PHP, có lẽ giải pháp tốt nhất có thể là chỉ cần thêm vào tập lệnh của bạn:

ignore_user_abort(TRUE);

Bằng cách này, ngay cả khi wgetkết thúc, tập lệnh PHP vẫn được xử lý ít nhất cho đến khi nó không vượt quá max_execution_timegiới hạn (chỉ thị ini: 30 giây theo mặc định).

Theo wgetanyay bạn không nên thay đổi thời gian chờ của nó, theo hướng dẫn UNIX thời gian chờ wget mặc định là 900 giây (15 phút) , whis là lớn hơn nhiều rằng phút 5-6 bạn cần.


7

Trước phiên bản 1.14, đối số thời gian chờ của wget không được tuân thủ nếu tải xuống qua https do lỗi .


Chỉ trích! CentOS 6 tàu với wget 1.12, tôi đã cùng một vấn đề với https liên kết
daisy

Tôi đang gặp lỗi chính xác! Đã dừng lại ở liên kết https, chứng chỉ đã hết hạn!
Dylan B
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.