샤르의 잡동사니 창고

[PHP] 특정 사이트의 온라인/오프라인 상태 알아내기

컴퓨터 2011. 6. 23. 22:10
PHP의 fsockopen() 함수를 이용하여 서버의 온라인/오프라인 상태를 알아볼 수 있습니다.


기본 형태

<?php
@$socket = fsockopen("호스트명", 포트번호, $errno, $errstr, 요청시간);
if(!$socket) {
    return "Offline";
} else {
    fclose($socket);
    return "Online";
}
?>

참 간단하죠? ^^;


함수로 이용

당연한 말이지만 이를 함수로 만들어서 쓸 수도 있습니다.

<?php
function server_check($host, $port) {
    @$socket = fsockopen($host, $port, $errno, $errstr, 요청시간);
    if(!$socket) {
        return "Offline";
    } else {
        fclose($socket);
        return "Online";
    }
}
?>

이렇게 함수로 만들어두면 여러 호스트에 걸쳐서 결과를 출력해야 할 때에 정말 유용하죠.

<?php
// 호스트명:포트번호 에 대해
echo server_check("호스트명", 포트번호);

// ex) blog.shar.kr:80
echo server_check("blog.shar.kr", 80);

// ex) ftp.shar.kr:21
echo server_check("ftp.shar.kr", 21);
?>

그러면 이를 조금 더 응용하여 실용적으로 사용할 수 있게끔 고쳐봅시다.




활용(응용)방법 예시

특정 호스트의 온라인/오프라인 상태를 알아내어, 온라인 상태라면 링크를, 오프라인 상태라면 오프라인이라는 표시를 해보도록 하는겁니다.

<?php
// 위에서 생성한 함수에 $name(편의상 표기할 사이트명) 을 추가하였습니다.
function server_check($host, $port, $name) {
    @$socket = fsockopen($host, $port, $errno, $errstr, 1);
    if(!$socket) {
        // $name is currently offline status. (오프라인 상태)라는 문장을 리턴해줍니다.
        return $name." is currently <sapn style=\"color:FFA0A0;\">offline status</span>.";
    } else {
        fclose($socket);
        // 온라인 상태를 표기하려면 다음 주석을 해제하도록 합니다.
        //return $name." is currently <sapn style=\"color:00FF00;\">online status</span>.";
        // $name (on $host) 에 대한 하이퍼링크를 리턴합니다.
        return "<a href=\"http://".$host.":".$port."\">".$name." (on ".$host.")</a>";
    }
}

echo "
<!-- 편의상 html 구현은 생략합니다. -->
    <!-- 표시할 사이트를 다음 형식으로 적어나가면 됩니다. -->
    ".server_check("호스트명", 포트번호, "편의상 표기할 사이트명")."<br />

    <!-- 다음은 예시입니다. -->
    ".server_check("blog.shar.kr", 80, "Blog")."<br />
    ".server_check("fs.shar.kr", 80, "File Server")."<br />
";

?>

어떻습니까?

간단한 응용만으로 사이트의 온라인/오프라인 상태를 자동으로 탐지하고, 살아있는 사이트에 대해서만 링크를 제공하는 멋진 효과를 구현해내었습니다.

만약 개인 서버 등을 운영하신다면, 이런 식으로 페이지를 제작하면 이용하는 입장에서는 정말 편리하겠죠?


예제

예제는 이곳을 클릭하시면 보실 수 있습니다.

'컴퓨터' 카테고리의 다른 글

USB 메모리 4종 읽기 속도 비교  (0) 2011.07.01
티스토리 이메일 이벤트에 당첨되어 버렸습니다.  (2) 2011.06.30
블루투스 키보드 (IN-BK01) + 동글 (H-20)  (0) 2011.06.30
음원 스토리밍 용 계정 4Shared에서 kiwi6 로 변경  (2) 2011.06.30
4Shared 에 업로드 한 미디어 embed 시 문제점  (0) 2011.06.28
hosts를 수정하여 네이트온 광고 막기  (0) 2011.06.23
Bing 번역의 한-영 번역 오류  (0) 2011.06.23
블로그 스킨 변경  (0) 2011.06.22
IE9 에서 페이지가 정상 표시되지 않을 경우 팁  (0) 2011.06.22
WZR-HP-G300NH 결국 벽돌(Bricked) 되다  (6) 2011.06.20
현재 브라우저에서는 댓글을 표시할 수 없습니다.
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.
블로그 이미지

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

by Selnis

카운터

Total
Today
Yesterday

최근에 올라온 글

  • 더 보기

최근 댓글

방명록 : 관리자 : 글쓰기
Selnis's Blog is powered by daumkakao
Skin ⓘ material T Mark1 by 뭐하라

ⓒ 2015. Selnis all rights reserved.

favicon

샤르의 잡동사니 창고

안드로이드 앱 개발을 업으로 삼고있는 헬조선 컴돌이의 잡동사니 창고

  • 태그
  • 링크 추가
  • 방명록

관리자 메뉴

  • 관리자 모드
  • 글쓰기
  • 전체 (322)
    • 공지 (4)
    • 잡담 (35)
    • 게임 (150)
    • 컴퓨터 (123)

카테고리

PC화면 보기 티스토리 Daum

티스토리툴바