PHP의 fsockopen() 함수를 이용하여 서버의 온라인/오프라인 상태를 알아볼 수 있습니다.
참 간단하죠? ^^;
이렇게 함수로 만들어두면 여러 호스트에 걸쳐서 결과를 출력해야 할 때에 정말 유용하죠.
그러면 이를 조금 더 응용하여 실용적으로 사용할 수 있게끔 고쳐봅시다.
어떻습니까?
간단한 응용만으로 사이트의 온라인/오프라인 상태를 자동으로 탐지하고, 살아있는 사이트에 대해서만 링크를 제공하는 멋진 효과를 구현해내었습니다.
만약 개인 서버 등을 운영하신다면, 이런 식으로 페이지를 제작하면 이용하는 입장에서는 정말 편리하겠죠?
기본 형태
<?php
@$socket = fsockopen("호스트명", 포트번호, $errno, $errstr, 요청시간);
if(!$socket) {
return "Offline";
} else {
fclose($socket);
return "Online";
}
?>
@$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";
}
}
?>
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);
?>
// 호스트명:포트번호 에 대해
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 />
";
?>
// 위에서 생성한 함수에 $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 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.