2010-02-18 46 views
61

Tôi đang chạy một kịch bản PHP qua cron sử dụng wget, với lệnh sau đây:WGET có hết thời gian chờ không?

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

Các kịch bản sẽ mất tối đa là 5-6 phút để làm chế biến của nó. WGet sẽ chờ đợi nó và cung cấp cho nó tất cả các thời gian cần thiết, hoặc nó sẽ hết thời gian?

Trả lời

111

Theo the man page of wget, có một vài tùy chọn liên quan đến timeout - và có một mặc định đọc timeout của 900s - vì vậy tôi nói rằng, vâng, nó có thể timeout .


Dưới đây là các tùy chọn trong câu hỏi:

-T seconds 
--timeout=seconds 

Đặt thời gian chờ mạng đến giây giây. Điều này tương đương với chỉ định --dns-timeout, --connect-timeout--read-timeout, tất cả cùng một lúc thời gian.


Và đối với những ba lựa chọn:

--dns-timeout=seconds 

Đặt tra cứu DNS để timeout giây giây.
Tra cứu DNS không hoàn thành hoàn thành trong khoảng thời gian đã chỉ định sẽ không thành công.
Theo mặc định, không có thời gian chờ trên tra cứu DNS, ngoài được triển khai bởi thư viện hệ thống.

--connect-timeout=seconds 

Đặt thời gian chờ kết nối đến giây giây.
Kết nối TCP mất dài hơn để thiết lập sẽ bị hủy.
Theo mặc định, không có thời gian chờ kết nối , ngoài các thư viện hệ thống đã triển khai .

--read-timeout=seconds 

Đặt thời gian chờ đọc (và viết) để 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 nhận được hơn số giây được chỉ định, đọ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 trực tiếp ảnh hưởng đế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ì đó giống như

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

nên chắc chắn không có thời gian chờ trước khi dài hơn thời gian của kịch bản của bạn.

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

+0

nếu tôi đặt -t 0 nó sẽ đợi vô thời hạn? –

+2

Tùy chọn '-t' có vẻ là bí danh của' --tries', * Đặt số lần thử lại thành 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 nếu có lỗi - và có thể bạn không muốn thời gian chờ bị coi là lỗi và kịch bản được gọi lại. –

+24

- timeout = 0 sẽ tắt thời gian chờ – MiniScalope

25

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

6

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

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

Theo wget anyay bạn không nên thay đổi thời gian chờ của nó, according to the UNIX manualthờ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.

3

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

+0

Chết tiệt! CentOS 6 tàu với wget 1,12, tôi nhận được cùng một vấn đề với https liên kết – daisy

Các vấn đề liên quan