* を挿入。もちろんuptime.phpの部分はこのファイルのこと。 * さらに表示したい部分に * --日と--時間----秒間 * と入れる。ここをお好みで。 * これで完了。 */ /***********************注意****************************** * *  このファイルと表示するページのドメインが違うと表示でき * ないかもしれません。多分ブラウザがエラーを出します。これ * は多分仕様です(ーー;) *  ひとつのページに2箇所以上表示できません。これは表示部 * 分をgetElementByIdで取得してるためです。 */ /* * 作成:まさる * masaru@tamurake.myhome.cx * http://tamurake.myhome.cx/uptime/index.html * */ /* * 20060802  経過時間を取得するときに$_Request["type"]が定義 * されていないというエラーを直した。 * 20060731  サーバーから経過時間を取得する方法をPOSTからGET * に変更。IEのためにキャッシュを使用しないように明 * 示的に指定。 */ if(isset($_REQUEST["type"])&& $_REQUEST["type"]== "js"){ disp_js(); }else{ /* uptimeを出力 */ define ("UPTIMEFILE","/proc/uptime"); $time = file_get_contents (UPTIMEFILE); $time = sscanf($time,"%d"); echo $time[0]; } function disp_js(){ /* スクリプトを出力 */ $url = $_SERVER["PHP_SELF"]; ?> setInterval ( "uptime()",1000 ) ; var ut_second = -10; function createXmlHttp() { //ref:http://www.hawk.34sp.com/stdpls/xml/xmlhttprequest.html return this.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); } function flash(n){ var url=""; var xmlhttp = createXmlHttp(); xmlhttp.onreadystatechange =function(){ if (xmlhttp.readyState == 4) { disptime(xmlhttp.responseText); //h.innerHTML=xmlhttp.responseText; } }; xmlhttp.open("GET",url , true); xmlhttp.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded"); xmlhttp.setRequestHeader("If-Modified-Since","null"); //ref:http://www.semblog.org/msano/archives/000386.html xmlhttp.send(""); } function disptime(n){ var d = document.getElementById("day"); var h = document.getElementById("hour"); var m = document.getElementById("mini"); var s = document.getElementById("sec"); var sec = n%60; s.innerHTML=sec; ut_second = sec; n = (n-sec)/60; var min = n%60; m.innerHTML=min; n = (n-min)/60; var hou = n%24; h.innerHTML=hou; n = (n-hou)/24; var day = n; d.innerHTML=day; } function uptime(){ ut_second +=1; if(ut_second == -9 || ut_second == 60){ //更新頻度をあげたい場合はここを変更 flash(); //alert("sync"); }else if(ut_second < 0 || ut_second >=60){ //安全策(?)同期に1秒以上かかったりした場合のため flash(); }else{ var s = document.getElementById("sec"); s.innerHTML = ut_second; } }