(보는 사람도 없지만 혼자서..그렇다고 생각하고...ㅋㅋ)
웹을 통해서는 서버에 접속할 방법이 없죠..
서버에 접속을 하지 못하면 해당 서버의 시간이나 다른 정보들을 확인할 수 없습니다.
그런데 어떻게 다른 서버의 시간을 확인한단 말인가?!
네, 그렇습니다..
웹을 통해서 HTTP 프로토콜로 통신을 할 때는 항상 서버와 클라이언트 간에 헤더를 주고 받습니다.
이 헤더에 바로 서버의 시간이 들어가 있는 것이죠!
그렇다면 어떻게 그 헤더를 확인할까요?
PHP에서는 아래와 같은 함수를 제공해서 쉽게 헤더의 정보를 확인할 수 있습니다.
<pre>
<?php
print_r(get_headers("http://www.google.com"));
?>
</pre>
get_headers 함수를 사용하면 헤더의 정보를 배열로 가지고 옵니다.
아래와 같이 출력이 되죠..
Array
(
[0] => HTTP/1.0 200 OK
[1] => Date: Fri, 17 Jan 2014 05:54:31 GMT
[2] => Expires: -1
[3] => Cache-Control: private, max-age=0
[4] => Content-Type: text/html; charset=ISO-8859-1
[5] => Set-Cookie: PREF=ID=ba7f1efc9ec1115d:FF=0:TM=1389938071:LM=1389938071:S=2t679jx5Jn1jQBKx; expires=Sun, 17-Jan-2016 05:54:31 GMT; path=/; domain=.google.com
[6] => Set-Cookie: NID=67=Hjk8uiYHUXHHR0Mwp6GvSpXdztd5xvPmeVWrxa33pcaljTShBUGl2YoRbk3hrSFXxeUbyQy9Uv1FggIXD87__YjW9jh5YjDTV052pVdxEzZkn9uDu9-GAc0eZ1DbgP7r; expires=Sat, 19-Jul-2014 05:54:31 GMT; path=/; domain=.google.com; HttpOnly
[7] => P3P: CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
[8] => Server: gws
[9] => X-XSS-Protection: 1; mode=block
[10] => X-Frame-Options: SAMEORIGIN
[11] => Alternate-Protocol: 80:quic
)
배열을 숫자가 아닌 key 형태로 가져오고 싶을 땐 get_headers 함수에 파라미터 하나만 더 추가해 주면 됩니다.
<pre>
<?php
print_r(get_headers("http://www.google.com", 1));
?>
</pre>
그럼 아래와 같이 key 형태의 배열로 값을 가져오게 됩니다.
Array
(
[0] => HTTP/1.0 200 OK
[Date] => Fri, 17 Jan 2014 05:56:25 GMT
[Expires] => -1
[Cache-Control] => private, max-age=0
[Content-Type] => text/html; charset=ISO-8859-1
[Set-Cookie] => Array
(
[0] => PREF=ID=8f419d80f7122ce6:FF=0:TM=1389938185:LM=1389938185:S=ke8O3WHqhTOLocAD; expires=Sun, 17-Jan-2016 05:56:25 GMT; path=/; domain=.google.com
[1] => NID=67=oFNKouP20OJI0pI_2yjJ5TmOmYfXO_L3vS7GMET9g1t6hfUm4oDoozDDFy9Ox5Xw3Icqt04J6D5NZt2cIQmyw4wh7re3xUgrV4llSP2SLA5DX-xnwMQRZm1em98yEOat; expires=Sat, 19-Jul-2014 05:56:25 GMT; path=/; domain=.google.com; HttpOnly
)
[P3P] => CP="This is not a P3P policy! See http://www.google.com/support/accounts/bin/answer.py?hl=en&answer=151657 for more info."
[Server] => gws
[X-XSS-Protection] => 1; mode=block
[X-Frame-Options] => SAMEORIGIN
[Alternate-Protocol] => 80:quic
)
저~기에 Date가 보이시죠?ㅎㅎ
저 값이 바로 서버에서 클라이언트로 response를 보낸 시간입니다.
서버의 정확한 시간을 알아내려면 한가지 숙제가 남아있죠!
바로 오차 줄이기 입니다..
클라이언트와 서버 간에 데이터를 주고 받는 데 발생하는 시간적 오차입니다.
그건 여러분이 한번 생각해 보시기 바랍니다! ^^
허접하지만 소스는 GitHub를 통해 공유했습니다.