2011-09-10 4 views
9

PHP를 사용할 수있는 서버와 인터넷에서 핑 (ping) 할 수있는 라우터가 있습니다. ping이 성공PHP로 ping 가동 시간 서비스 만들기

  • 경우, 아무것도 일어나지 않을 것이다 : 나는 다음과 같은 결과를 라우터에 5 분마다 핑을 보내는 PHP 스크립트를 작성합니다.
  • ping이 실패하면 몇 분 정도 기다렸다가 계속 실패하면 내 전자 메일 주소로 경고를 한 번 보냅니다.
  • 라우터가 다시 ping 할 수 있으면 확인 메시지를 보냅니다.

PHP로 수행 할 수 있습니까? 방법? 누구든지 작은 PHP 파일이 있습니까?

+0

은 cron 작업이 더 좋은 소리를 사용하지 않을까요? – ajreal

답변

9

아래는 내가 묻는 것을 수행하는 간단한 PHP 스크립트를 작성했습니다. 서버에 핑 (ping)하고 결과를 텍스트 파일 ("up"또는 "down")에 기록하고 이전 결과가 위 또는 아래인지 여부에 따라 전자 메일을 보냅니다.

5 분마다 실행되도록하려면 5 분마다 PHP 스크립트를 호출하도록 cron 작업을 구성해야합니다. (대부분의 공유 웹 호스트는 cron 작업을 설정할 수 있습니다;. 방법을 찾아 호스팅 제공 업체의 설명서를 참조하십시오)

<?php 

//Config information 
$email = "[email protected]"; 
$server = "google.com"; //the address to test, without the "http://" 
$port = "80"; 


//Create a text file to store the result of the ping for comparison 
$db = "pingdata.txt"; 

if (file_exists($db)): 
    $previous_status = file_get_contents($db, true); 
else: 
    file_put_contents($db, "up"); 
    $previous_status = "up"; 
endif; 

//Ping the server and check if it's up 
$current_status = ping($server, $port, 10); 

//If it's down, log it and/or email the owner 
if ($current_status == "down"): 

    echo "Server is down! "; 
    file_put_contents($db, "down"); 

    if ($previous_status == "down"): 
     mail($email, "Server is down", "Your server is down."); 
     echo "Email sent.";  
    endif; 

else: 

    echo "Server is up! "; 
    file_put_contents($db, "up"); 

    if ($previous_status == "down"): 
     mail($email, "Server is up", "Your server is back up."); 
     echo "Email sent."; 
    endif; 

endif; 


function ping($host, $port, $timeout) 
{ 
    $tB = microtime(true); 
    $fP = fSockOpen($host, $port, $errno, $errstr, $timeout); 
    if (!$fP) { return "down"; } 
    $tA = microtime(true); 
    return round((($tA - $tB) * 1000), 0)." ms"; 
} 
+0

PHP에 네이티브 핑 기능이 없으므로이 스크립트를 사용하려고하면 http://stackoverflow.com/questions/1239068/ping-site-and-return-result-in-php를 참고하십시오. 물론 http://www.nagios.org/ – CodeReaper

+2

@CodeReaper와 같은 모니터링 시스템을 사용하십시오. 스크립트는 이미 해당 핑 기능을 포함하고 있습니다. – Nick

+0

나쁜, 내 ipad에서 서핑을 시도하고 아래로 스크롤 생각하지 않았다. – CodeReaper

3

는 개인적으로 핑덤 서비스를 사용이 인터넷에서 ping 할 수 있고 HTTP를 실행하는 경우 서버에. 정말 특별한 스크립트 작성에 깊이 관여 할 필요가 없습니다.

+1

50 개 이상의 웹 사이트를 모니터링 할 때 비용이 많이 듭니다. –

0

아니라 지금까지 난 당신이 PHP와 cronjob를 만들 수 없습니다 알고,하지만 당신이 할 수있는 것은 또한 당신이 대신

를 실행할 수 있습니다 그래서 당신이 필요한 호스트에 ping을 할 수있을 것입니다

this 사용 crontab을 그대로 스크립트에서

exec("ping 1.2.3.4")