訪問者が特定のページに費やした時間をカウントし、MySQL DB に保存したいと考えています。
次のようにwindow.onloadでタイマーを開始することを考えました:
window.onload= startCount;
window.onunload= sendCount;
var b=0;
var y;
function startCount() {
document.getElementById('livecount').innerHTML=b;
b=b+1;
y=setTimeout("startCount()",1000);
}
訪問者がページ (window.onunload) を離れた後、XMLHttpRequest を介して時間を PHP ファイルに送信し、DB に保存します。
function sendCount() {
clearTimeout(y);
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","count.php?q="+b,true);
xmlhttp.send();
}
問題は、それが常に機能するとは限らないことです。試してみると、10回のうち3回はうまくいくと思います。PHP と SQL を完全に実行するのに十分な時間が残っていないのでしょうか?