서버시간을 불러오는 사이트를 만들고있는데요, 소스좀 봐주실 수 있나요?

서버시간을 불러오는 사이트를 만들고있는데요, 소스좀 봐주실 수 있나요?

QA

서버시간을 불러오는 사이트를 만들고있는데요, 소스좀 봐주실 수 있나요?

본문

소스코드를 이용하여 작업을 해보고 있는데요(닷홈 무료호스팅이용중)

주소를 입력하고 서버시간 불러오는 속도가 굉장히 느립니다.

더불어 시간이 1970년 무슨 이런식으로 이상하게나오네요

이에관하여 지식을 얻을 수 있을까요?



	<?
/*
해당 서버의 시간 알아오기
*/
$host=$_GET['host'];
$host=ereg_replace("^.*//", "", $host);
?>
<style>
body, input, td, div
{
 font-family : arial,굴림;
 font-size : 9pt;
}
.button
{
 border-width : 1px;
 border-style : solid;
 border-color : #9F3515;
 background  : #FF754B;
 color   : #ffffff;
 height   : 20px;
 font-weight  : bold;
 padding   : 2px 1px 0px 1px;
}
.input
{
 border-width : 1px;
 border-style : solid;
 border-color : #777777;
 background  : #ffffff;
 color   : #000000;
 height   : 20px;
 padding   : 1px 1px 0px 1px;
}
</style>
</head>
<body>
<table align="center" bgcolor="#FFE241" border="0" cellpadding="15" cellspacing="1" width="100%">
 <tr>
  <td bgcolor="#FDF7D5"> 시간을 확인할 서버의 도메인(또는 IP address)을 입력하세요. (예:ebs.co.kr)<br><br>
   <form style="display:inline">http://
   <input class="input" name="host" size="30" type="text" value="<?=$host?>">
   <input class="button" type="submit" value="확인">
   </form>
  </td>
 </tr>
</table>
<?
if($host)
{
 $fp=@fsockopen($host, 80, $errno, $errstr, 3);
 if($fp)
 {
  $gap=time();
  fputs($fp, "GET /test_request HTTP/1.0n");
  fputs($fp,"n");
  $data='';
  while(! feof ($fp))
  {
   $data .=fgets ($fp, 1024);
  }
  fclose ($fp);
  $data=explode("Date: ", $data);
  $data=explode(" GMT", $data[1]);
  $data=strtotime($data[0]) + 9 * 3600;
  $data=(int)$data;
  if(!$data)
  {
   echo "<br><br>서버 접속에 실패하였습니다.";
  }
  else
  {
   $gap=time() - $gap;
   $data=$data + $gap;
?>
   <br><br><font style="font-size:20pt"><b><?=$host ?></b>의 현재시간은...<br><b><div id="timeArea" style="display:inline; font-size:20pt"></div></b>입니다.</font>
   <script language="javascript">
   var timePass = 0;
   function showTime()
   {
    var now = new Date();
    var timeStamp = (<?=$data?> + timePass) * 1000;
    now.setTime(timeStamp);
    var yy = now.getFullYear();
    var mm = now.getMonth() + 1;
    var dd = now.getDate();
    var hh = now.getHours();
    var ii = now.getMinutes();
    var ss = now.getSeconds();
    document.getElementById('timeArea').innerHTML = yy + "년 " + mm + "월 " + dd + "일 " + hh + "시 " + ii + "분 " + ss + "초";
    timePass++;
    setTimeout("showTime()", 1000);
   }
   showTime();
   </script>
<?
  }
 }
 else
 {
  echo "<br><br>서버 접속에 실패하였습니다.";
 }
}
?>
</body>); 

이 질문에 댓글 쓰기 :

답변 1

제가 해당 소스로 테스트했을 때는 정상적으로 나오는 경우도 있습니다.


sir.kr 등


다만, 일부 사이트의 경우에는.. 다른 Response 가 나오거나, Response 를 주지 않는 경우로 인해..


그러한 문제가 발생하는 듯 싶습니다. 이에 대한 다른 방법을 찾아봐야 하지 않을까 합니다.


1970년 등으로 나오는 이유는 timestamp 가 1970년 1월 1일을 기준으로 한 것이라서..


값을 전혀 못받아올 때.. 즉 값이 없을 때.. 그렇게 나올 것입니다.


즉, 값을 가져오는 시간이 오래 걸리는 것은 Response 를 못 받는 것이고,


결국 시각 정보는 받지 못해서.. 1970 년 등으로 나오는 것 같습니다.

답변을 작성하시기 전에 로그인 해주세요.
전체 7
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT