क्या WGET टाइमआउट करता है?


85

मैं निम्नलिखित कमांड के साथ Wget का उपयोग करके क्रोन के माध्यम से एक PHP स्क्रिप्ट चला रहा हूं:

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

इसकी प्रोसेसिंग करने में स्क्रिप्ट को अधिकतम 5-6 मिनट का समय लगेगा। क्या WGet इसकी प्रतीक्षा करेगा और उसे हर समय इसकी आवश्यकता होगी, या क्या यह समय समाप्त होगा?

जवाबों:


148

Wget के मैन पेज के अनुसार , टाइमआउट से संबंधित कुछ विकल्प हैं - और 900s का डिफ़ॉल्ट रीड टाइमआउट है - इसलिए मैं कहता हूं कि हां, यह टाइमआउट हो सकता है।


यहाँ प्रश्न में विकल्प दिए गए हैं:

-T seconds
--timeout=seconds

सेकंड के लिए नेटवर्क टाइमआउट सेट करें। यह निर्दिष्ट करने के बराबर है --dns-timeout, --connect-timeoutऔर --read-timeoutसभी एक ही समय में,।


और उन तीन विकल्पों के लिए:

--dns-timeout=seconds

DNS लुकअप टाइमआउट को सेकंड सेकंड में सेट करें।
DNS लुकअप जो निर्दिष्ट समय के भीतर पूरा नहीं होता है वह विफल हो जाएगा।
डिफ़ॉल्ट रूप से, DNS लुकअप पर कोई टाइमआउट नहीं है, सिवाय इसके कि सिस्टम लाइब्रेरीज़ द्वारा कार्यान्वित किया जाए।

--connect-timeout=seconds

कनेक्ट टाइमआउट को सेकंड सेकंड में सेट करें।
टीसीपी कनेक्शन जो स्थापित करने में अधिक समय लेते हैं, उन्हें निरस्त कर दिया जाएगा।
डिफ़ॉल्ट रूप से, सिस्टम लाइब्रेरी द्वारा लागू किए गए इसके अलावा कोई कनेक्ट टाइमआउट नहीं है।

--read-timeout=seconds

सेकंड के लिए रीड (और लिखना) टाइमआउट सेट करें।
इस टाइमआउट का "समय" निष्क्रिय समय को संदर्भित करता है: यदि, डाउनलोड के किसी भी बिंदु पर, सेकंड की निर्दिष्ट संख्या से अधिक के लिए कोई डेटा प्राप्त नहीं होता है, तो पढ़ने में विफल रहता है और डाउनलोड को पुनरारंभ किया जाता है।
यह विकल्प सीधे संपूर्ण डाउनलोड की अवधि को प्रभावित नहीं करता है।


मुझे लगता है जैसे कुछ का उपयोग कर

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

यह सुनिश्चित करना चाहिए कि आपकी स्क्रिप्ट की अवधि से पहले कोई टाइमआउट नहीं है।

(हाँ, यह शायद सबसे क्रूर समाधान संभव है ^ ^)


अगर मैं -t 0 सेट करता हूं तो क्या यह अनिश्चित काल तक इंतजार करेगा?
अपवोट पर क्लिक करें

4
-tविकल्प के उपनाम के प्रतीत हो रहा है --tries, जो संख्या के लिए पुनः के सेट संख्या। ;;; यह किसी भी तरह के टाइमआउट से संबंधित नहीं लगता है, लेकिन कई बार विकट होने पर फिर से डाउनलोड करने का प्रयास करेगा यदि कोई त्रुटि है - और आप शायद नहीं चाहते हैं कि टाइमआउट को एक त्रुटि माना जाए, और स्क्रिप्ट को फिर से बुलाया जा रहा है।
पास्कल मार्टिन


मैं शायद ग्रह पर एक हूं, लेकिन ubuntu 16 wget के लिए सिर्फ मूल्यों की अनदेखी करता है --timeout। शायद इसलिए कि मैं कमान में बुनियादी नीति का उपयोग कर रहा हूं
किरीसोविरोव

35

डिफ़ॉल्ट टाइमआउट 900 सेकंड है। आप अलग-अलग टाइमआउट निर्दिष्ट कर सकते हैं।

-T seconds
--timeout=seconds

डिफ़ॉल्ट को 20 बार पुन: प्रयास करना है। आप विभिन्न प्रयासों को निर्दिष्ट कर सकते हैं।

-t number
--tries=number

लिंक: wget मैन डॉक्यूमेंट


7

आपके प्रश्न के बाद से आपने कहा कि यह एक PHP स्क्रिप्ट है, शायद सबसे अच्छा समाधान केवल अपनी स्क्रिप्ट में जोड़ सकता है:

ignore_user_abort(TRUE);

इस तरह से भी यदि wgetसमाप्त हो जाता है, तो PHP स्क्रिप्ट कम से कम तब तक संसाधित होती रहती है जब तक कि वह max_execution_timeसीमा से अधिक न हो (ini निर्देश: डिफ़ॉल्ट रूप से 30 सेकंड)।

किसी के अनुसार wgetआपको इसका टाइमआउट नहीं बदलना चाहिए, UNIX मैनुअल के अनुसार डिफ़ॉल्ट wget टाइमआउट 900 सेकंड (15 मिनट) है , व्हिस ज्यादा बड़ा है कि आपको 5-6 मिनट चाहिए।


7

संस्करण 1.14 से पहले, बग के कारण https डाउनलोड करने पर wget टाइमआउट तर्कों का पालन नहीं किया गया था ।


अरे नहीं! CentOS 6 जहाज wget 1.12 के साथ, मुझे https के लिंक के साथ यही मुद्दा मिला
daisy

मैं वही त्रुटि कर रहा हूँ! Https लिंक समाप्त होने पर Wget रुक गया!
डायलन बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.