2010-02-18 27 views
61

aşağıdaki komutla, Wget'i kullanarak cron vasıtasıyla bir PHP komut dosyası çalıştırıyorum:WGET zaman aşımı var mı?

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

komut dosyasının işlem yapmak için 5-6 dakika en fazla sürer. WGet onu bekleyecek ve ihtiyaç duyduğu her zaman verecek mi, yoksa zaman aşımına mı uğrayacak?

cevap

111

the man page of wget göre, zaman aşımları ile ilgili seçenekler bir çift vardır - ve varsayılan 900s zaman aşımı okumak var - ben evet, zaman aşımı olabilir, demek . saniye saniye için

-T seconds 
--timeout=seconds 

Set ağ zaman aşımı: Burada


söz konusu seçeneklerdir. Bu, --dns-timeout, , ve --read-timeout belirtme değerlerini zamanına eşittir, hepsi aynı zamanında.


Ve bu üç seçenek için

:

--dns-timeout=seconds 

saniye saniye için DNS arama zaman aşımı ayarlayın. belirtilmeyen
DNS aramaları belirtilen süre içinde tamamlanmayacaktır başarısız olur.
Varsayılan olarak, sistem kitaplıkları tarafından uygulanan dışındaki DNS aramalarında zaman aşımı yok.

--connect-timeout=seconds 

saniye saniye için bağlantı zaman aşımı ayarlayın.
Kurmak için daha uzun süre alan TCP bağlantıları iptal edilecek.
Varsayılan olarak, sistem kitaplıkları tarafından uygulanan dışında zaman aşımına bağlanma yok. saniye saniye okuma (ve yazma) zaman aşımı ayarlayın
--read-timeout=seconds 

. Bu zaman aşımı süresini boşta atıfta arasında
"zaman": İndirme herhangi bir noktasında , eğer hiçbir veri saniye belirtilen sayıdan fazla alındığında, okuma başarısız olur ve indirme yeniden başlatılır.
Bu seçenek doğrudan etkilemez, tüm indir sürelerini etkiler.


Ben Senaryonuzun süresinden uzun önce hiçbir zaman aşımı yoktur emin olun

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

gibi bir şey kullanarak varsayalım.

(Evet, muhtemelen mümkün olan en acımasız çözüm ^^)

+0

Eğer 0 ayarlıyorum, sonsuza kadar bekleyecek mi? –

+2

'-t 'seçeneği,' -tries 'adının bir takma adı gibi görünüyor; bu sayı, yeniden deneme sayısını numaraya ayarlayın. * ;;; Herhangi bir zaman aşımı ile ilgili görünmüyor, ancak bir hata varsa wget'in tekrar indirmeye çalışacağı zaman sayısı kadardır ve muhtemelen bir zaman aşımının hata olarak kabul edilmesini istemezsiniz. betiği çağrılıyor. –

+24

--timeout = 0 zaman aşımını devre dışı bırakacak – MiniScalope

25

Varsayılan zaman aşımı 900 saniyedir. Farklı zaman aşımı belirtebilirsiniz.

-T seconds 
--timeout=seconds 

Varsayılan değer, 20 kez tekrar denenmektir. Farklı denemeler belirtebilirsiniz.

-t number 
--tries=number 

linki: wget man document

6

sorunuzu bunu belki en iyi çözüm sadece komut eklemek olabilir, bir PHP komut dosyası olduğunu söyledi beri:

Bu şekilde

ignore_user_abort(TRUE); 
bile wget eğer sonlandığı PHP script (: varsayılan olarak 30 saniye ini direktif) max_execution_time sınırını aşan gelmez en az kadar işlenen devam ediyor. onun zaman aşımını değiştirmemelisiniz anyay wget gereğince

, according to the UNIX manualvarsayılan wget zaman aşımı 900 saniye (15 dakika), whis 5-6 dakika ihtiyacınız olduğunu çok daha büyük olmasıdır.

3

1.14 sürümünden önce, bug nedeniyle https üzerinden karşıdan yükleme yapılması durumunda wget zaman aşımı argümanlarına uyulmamıştır.

+0

Damn! CentOS 6 wget 1.12 ile geliyor, https linkleri ile aynı sorunu aldım – daisy