2013-02-20 2 views
1

나는 아래의 스크립트를 사용하고 있습니다. 그러나 3-4 번 ping을하고 싶습니다. 심지어 단일 요청 시간 제한이 있다면 3-4 번 안에 PHP를 원합니다. 실패로 돌아온다.PHP ping, 심지어 1 요청 시간 초과

여기 내가 사용하는 스크립트는 다음과 같습니다

<?php 

function pingAddressHasNeverFailed($tries) { 
    for ($i = 0; $i < $tries; $i++) { 
     $pingresult = shell_exec("ping -c 1 www.google.com", $outcome, $status); 
     if ($status != 0) 
      return false; 
    } 
    return true; 
} 

if (pingAddressHasNeverFailed(3)) { 
    echo "uoc gi"; 
} 
?> 

할 수 있다면, 도움이 사전에 정말 감사하십시오!

+0

Windows에서만 독점적으로 사용됩니까? –

+0

아니, 나는 linux/centos에서 사용하고있다. – thevoipman

+0

그런데 왜'-n 3'을 사용하고 있는가? '-c 3 '이되어서는 안됩니까? –

답변

2

:

function ping($host, $times = 3) 
{ 
    exec("/bin/ping -c 3 $host", $out, $status); 

    return $status === 0 && false !== strpos(join('', $out), '0%'); 
} 

if (ping('www.google.com)) { 
    echo "yay\n"; 
} else { 
    echo "oh dear\n"; 
} 

사용자 환경에 맞게 및 호스트 이름이 살균되어 있는지 확인하기 위해 ping 인수를 조정해야 할 수도 있습니다.

2

그런 경우 명령 n (n은 시도 횟수)을 실행해야합니다. 예 :

function pingAddressHasNeverFailed($tries) { 
    $outcome = array(); 
    $status = -1; 

    for ($i = 0; $i < $tries; $i++) { 
     $pingresult = exec("/bin/ping -n 1 www.google.com", $outcome, $status); 
     if ($status != 0) 
      return false; 
    } 
    return true; 
} 

사용법 : 어떤 핑은 리눅스와 윈도우에서 동일 출력 (즉, 0% 패킷 손실)에 0%가되지 않습니다 (세트에) 실패하면

if (pingAddressHasNeverFailed(3)) { 
    //do something useful 
} 
+0

나는 이것을 시험해 보았다. PHP : 정의되지 않은 변수 : 결과는 – thevoipman

+0

이다. @thevoipman 나는 코드를 복사하여 붙여 넣었다. . 내 로컬 변수를 초기화하는 것을 잊었습니다. 편집 된 코드. – Leri

+0

또한 Jack은 youd가 리눅스에서 -n 대신 -c를 사용하길 원한다고 말했습니다. –