2009-10-01 34 views
6

Tôi đã viết một kịch bản shell mà có một chức năng như thế này:curl thử lại vào thời gian chờ

function getpage { 
     echo $1 
     curl -O "http://www.example.com/$1" -b cookie.txt -s 
} 

Vấn đề là nếu lần trang web ra thì trang đó sẽ bị bỏ qua, tôi cần nó để thử lại nếu nó hết thời gian (tôi cũng sẽ đặt trong khoảng thời gian 60 giây).

Làm cách nào để thực hiện việc này?

Trả lời

8

Bạn có thể sử dụng --retry <num> để thử lại bắt buộc. Một cách khác là thêm -w http_code để xem mã trả lại là gì ... nếu không phải 200 thì hãy thử lại.

+0

bây giờ tại sao tôi nghĩ về điều đó, giá trị thời gian chờ là 10 giây với 50 lần thử lại (tôi rất nghi ngờ nó sẽ cần nhiều hơn 3) – Hintswen

+3

Có cách nào thử lại khi lỗi không thể kết nối hoặc kết nối bị từ chối không? – jrwren

+0

bạn có thể sử dụng: --writeout {http_code} Và phân tích cú pháp kết quả. Curl sẽ trả về 0 nếu không thể kết nối, nếu không thì mã trạng thái. –

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