Linux komut satırı PHP ile internet bağlantısını denetleme

5 Cevap php

Ben bluetooth çevirmeli bağlantı açmak için linux komut satırı PHP kullanarak yapıyorum ve internet bağlantısı etkin olup olmadığını kontrol etmek için bir quick'n'dirty yol gerekir. Peki, kirli olmak zorunda değil, ama çabuk takdir edilmektedir. :) exec dış komutları çalıştırmak için kullanmak bir sorun değildir.

Bazı kararlı sunucu (örneğin google) ping düşünüyorum, ama biraz daha iyi bir yolu olup olmadığını merak ediyorum. Belki çıkışını kontrol ifconfig? ("Bağlı", "sunucuya bağlanamıyor") gibi açık bir yanıt ile olacak bir komut doğal iyi olurdu. Fikirler?

5 Cevap

Eğer bir dış sunucuya güvenmek olmadan çalışmak olacak bir şey istiyorsanız, varsayılan bir rota için kontrol edebilirsiniz. Bu komut, varsayılan yollarının sayısının yazdıracaktır:

/sbin/route -n | grep -c '^0\.0\.0\.0'

Bu ise 0, dış dünya alınamıyor.

Eğer exec kullanarak rahat iseniz (IP) tarafından internet servis sağlayıcınızın DNS sunucularını ping, ben (internet bağlantınızı kontrol etmek için) olacaktır

exec("ping -c 1 $ip 2>&1", $output, $retval);

Muhtemelen de www.google.com bir sayfa (wget / curl 'senaryo') denemek ve almak için fsockopen kullanılarak saf PHP bunu yapabilirdi.

if(!fsockopen("www.google.com", 80)) {
    echo "Could not open www.google.com, connection issues?";
}

I ping de .. gibi bir şey kullanabilirsiniz kullanmanızı öneririz:

exec("ping -c 4 www.google.com", $output, $status);
if ($status == 0) {
  // ping succeeded, we have connection working
} else {
  // ping failed, no connection
}

Dosyaya tasarrufu (deneyin) değil seçenekleri wget yapmak için - Eğer wget kullanmaya karar verirseniz, indirmek istediğiniz sayfanın url http:// prepend hatırlıyorum, ve ben "-q-O" ekleme önermek ..

Bunu yapmak için başka bir yolu php üzerinde kıvrılma / yuvalarını kullanarak, ama ben o aradığınız hızlı yolu olmadığını düşünüyorum ..

Sen böyle bir şey için timeout parametre-W ile bazı dış web wget kullanabilirsiniz. Bu zaman aşımı süresi içinde alırsa zaman aşımı başarı olmadan geçen 1 döndürür, ve 0. Eğer önerilen Ayrıca, ping, bu amaçla kullanılabilir.

İnternet bağlantısı? Bu nedir? Lütfen, define "internet bağlantısı"! Nereye - Sen kullanıcı bağlı olup olmadığını kontrol etmek isteyebilirsiniz? Şirketinizin sunucusuna? Eh, o ping! Veya nereye? Aright, ping google.com, ama bu size sadece kontrol edeceğiz olsun kullanıcının google sunucusuna bağlı, tüm diğer siteler sistem yöneticisi tarafından yasaklanmış olabilir beri.

Genellikle, ağ yönlendirme size "Internet" bir çeşit bağlı olup olmadığınızı kontrol edemez böyle bir etki alanıdır. Yalnızca belirli sunucularını kontrol edebilirsiniz.