2010-02-18 10 views
61

मैं Wget के प्रयोग से क्रॉन के माध्यम से एक PHP स्क्रिप्ट चल रहा हूँ, निम्न आदेश के साथ:डब्लूजीईटी टाइमआउट करता है?

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

स्क्रिप्ट 5-6 मिनट की एक अधिकतम ले इसकी प्रोसेसिंग करने के लिए होगा। क्या डब्लूजीएटी इसके लिए इंतजार करेगा और इसे हर समय देने की ज़रूरत होगी, या क्या यह समय समाप्त हो जाएगा?

उत्तर

111

the man page of wget के अनुसार, वहाँ समय समाप्ति से संबंधित विकल्पों में से एक जोड़े हैं - और वहाँ एक डिफ़ॉल्ट 900s का समय समाप्त पढ़ा - तो मैं कहता हूँ कि, हाँ, यह समय-समाप्त कर सकता है । सेकंड सेकंड के लिए

-T seconds 
--timeout=seconds 

त सेट करें:


यहाँ सवाल में विकल्प हैं। यह --dns-timeout, --connect-timeout, और --read-timeout निर्दिष्ट करता है, सभी समय पर।


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

--dns-timeout=seconds 

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

--connect-timeout=seconds 

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

--read-timeout=seconds 

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


मैं की तरह

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

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

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

+0

यदि मैं सेट -0 0 यह अनिश्चित काल तक इंतजार करेगा? –

+2

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

+24

--timeout = 0 टाइमआउट अक्षम करेगा – MiniScalope

25

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

-T seconds 
--timeout=seconds 

डिफ़ॉल्ट 20 बार पुनः प्रयास करना है। आप अलग-अलग प्रयास निर्दिष्ट कर सकते हैं।

-t number 
--tries=number 

लिंक: wget man document

6

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

ignore_user_abort(TRUE); 

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

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

3

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

+0

अरे! WET 1.12 के साथ CentOS 6 जहाजों, मुझे https लिंक के साथ एक ही समस्या मिली – daisy

संबंधित मुद्दे