본문 바로가기
㏈ª By β┖υΕJini

마이피플 웹위젯을 활용하여 데이터베이스 모니터링

by ㏈ª ☞ β┖υΕJini.κR 2012. 12. 6.

요즘 대부분의 사람들이 스마트폰을 사용 하고 있죠^^

2012 SQL Unplugged 에서 어떤 분이 마이피플을 활용해서 모니터링 메세지를 받는다고 해서

저도 한번 찾아 보고 테스트 해보았습니다.

첫번째, 마이피플의 메세지를 보내기 위해
우선 환경은 PHP 구동할수 있어야 합니다. (참고로 IIS에서  dll 등록이해 사용하거나 윈도우 아파치 설치 해서 구동 할수 있습니다. )

두번째, 간단하게 ASP 웹페이지를 이용해서 메세지를 보낼수 있게 구현해보았습니다.

우선 첫번째 PHP 서버에  MyPeople.php 를 자신이 원하는 위치에 넣어

MyPeople.php  (http://bluejini.kr/MyPeople.php )

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=euc-kr">
<?php
// MyPeople widgetMessage Send Function
function MyPeople_send($key='', $from, $msg) {
 if($key=='') $key= 'safdsafdsadfsafdsafdsa';
 $msg = urlencode($msg);
 $url="http://air21.daum.net/air21/widget/sendMessage.daum";
 $t_data="key=".$key."&content=".$msg."&from=".$from;
 $result=trans_sock($url, $t_data);
}
// Web Soket
function trans_sock($url, $t_data) {
 $uinfo = parse_url($url);
 if($uinfo[query]) $t_data .= "&".$uinfo[query];
 if(!$uinfo[port]) $uinfo[port] = "80";
 //Last Submit Info
 $send_str = "POST ".$uinfo[path]." HTTP/1.1\r\n".
 "Host: 80\r\n".
 "User-Agent: MTools\r\n".
 "Content-Type: application/x-www-form-urlencoded\r\n".
 "Content-length: ".strlen($t_data)."\r\n".
 "Connection: close\r\n\r\n".
 $t_data;
 //Submit
 $fp = fsockopen($uinfo[host],$uinfo[port]);
 fputs($fp,$send_str);
 //Request
 while(!feof($fp)) $response .= fgets($fp,128);
 fclose($fp);
 $value=explode("[[",$response);
 $value=explode("]]",$value[1]);
 return $value[0];
}
$key=$_REQUEST["key"];
$from=$_REQUEST["from"];
$msg= $_REQUEST["message"];
MyPeople_send($key, $from, $msg) ;
?>

그럼 두번째 http://bluejini.kr/MyPeople.php 에 GET 방식으로 from,key,message 값을 보내면 메세지를 보낼수 있게
웹페이지를 하나 만듭니다.
이페이지의 역활은 페이지를 띄워 놓았을때 10분 간격으로 Refresh 하여 디비에서 메세지 보낼 정보(모니터링된 결과를 특정 테이블에 넣는 잡을 수행)을 가져와 데이터가 있으면 메세지를 보내게 됩니다.


DBCHECK.asp  (http://bluejini.kr/DBCHECK.asp )

<meta http-equiv='Refresh' content='600; URL=DBCHECK.asp'>
<%
Dim Dbcon,SQL, Rs
Set Dbcon = Server.CreateObject("ADODB.Connection")
Dbcon.Open "Provider=sqloledb;Data Source=MIS010; Initial catalog=ADMIN; User ID=ReplAdmin; Password=21DataSyncAdmin"
Set Rs = Server.CreateObject("ADODB.RecordSet")
SQL = "SELECT * FROM ADMIN.DBO.DISKSize_Check"
Rs.Open SQL,DBcon
if not (rs.eof or rs.bof) then
do until Rs.eof
 response.WRite "<BR>"
 response.WRite "["&rs(0)&"]|["&rs(1)&"]|["&rs(2)&"]|["&rs(3)&"]|["&rs(4)&"]"
 response.WRite "<BR>"
 response.WRite "<BR>"
 %>
 <iframe src="http://bluet798.cafe24.com/MyPeople.php?from=01045647117&key=7L6qZQCJ6WJDIuyPLo834g%3D%3D&message=MIS010:<%=rs(0)%>|<%=rs(1)%>|<%=rs(2)%>|<%=rs(3)%>|<%=rs(4)%>" frameborder=1  height=100 width=100></iframe>
 <%
 rs.movenext
 loop
else
end if
rs.close
DBcon.close
set rs = nothing
set DBcon = nothing
%>


그럼 GET 방식 값은?

from : 핸드폰번호
key : 메세지 보낼 사람 키값
message : 보내고 싶은 메시지 

1.  다음 로그인 : http://widgetbank.daum.net/widget/view/966 
2. "HTML소스" 선택하시고 [퍼가기]버튼을 클릭
3. 출력되는 스크립트 소스를 복사하여 임의의 곳에 붙여넣은 후 key 값

 아래는 출력되는 소스코드의 일부분중 아래의 부분을 찾아 키를 복사(굵은 부분이 키 부분)
c50da94330a.xml&up_mypeople_key=safdsafdsafasfd%3D%3D&up_display 

http://bluejini.kr/DBCHECK.asp 역활은 데이터베이스에 기록되어 있는 10분에 한번씩 리플래시를 통해 실행 되고 메세지 정보를 가져와 메세지를 보내게 됩니다. 아래 처럼 IFRAME 으로 값을 넘기게 되는거죠. 전 웹으로 했지만 실제로 사용 할려면 아래처럼 실행되는 서버를 하나 만드는게 좋을 듯 하네요.

 

 



그럼 이렇게 메세지가 오게 됩니다. 

간단하게 원리를 설명하고자 만들어 보았어요..^^