서버시간을 불러오는 사이트를 만들고있는데요, 소스좀 봐주실 수 있나요?
본문
소스코드를 이용하여 작업을 해보고 있는데요(닷홈 무료호스팅이용중)
주소를 입력하고 서버시간 불러오는 속도가 굉장히 느립니다.
더불어 시간이 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 년 등으로 나오는 것 같습니다.
답변을 작성하시기 전에 로그인 해주세요.