0

ほとんどの人がアクセスするページであるインデックス ページに IP を記録しています。統計のために IP をログに記録したい。すべての情報は MySQL データベースに入ります。私の問題はラグです。

ページを生成するのに約 1 秒かかります。サーバーがデータベースに接続してログを挿入するのをできるだけ速くしたいのです。今(私は信じています)ユーザーはインデックスページにアクセスし、ページ全体がロードされる前にスクリプトが実行され、DB に接続してデータを挿入します。そのため、ユーザーはデータが挿入されるまで少し待つ必要があります。ユーザーがページにアクセスしてから、データがDBに挿入されるようにします。

これは私のコードです。

インデックス.php

$ip = $_SERVER['REMOTE_ADDR'];
if(substr($ip,0,4) != "192."){ //Don't log my local IP
    $page = $_SERVER['PHP_SELF']; 
    include("ext/functions.php"); 
    logger($page,$ip);
}

関数.php

<?php 
function logger($page, $ip){ 
    $logr = mysqli_query(mysqli_connect($host, $user, $pass,$statDB),
    "INSERT INTO logs (page, DATE, ip) VALUES ('$page', NOW(), '$ip')"); 
}
?>
4

2 に答える 2

0

ページが完全にロードされた後、jquery を使用してそれを行うことができます。

php ページを作成し、php/mysql コードを「storeip.php」のように保存します。

次に、jquery ライブラリをダウンロードして、次のようにインデックス ページに挿入します。

<script src="scripts/jquery.min.js" type="text/javascript"></script>

次のコードを使用します。

<script type="text/javascript">
$(document).ready(function(){
var ip = "<? echo $_SERVER['REMOTE_ADDR']; ?>";
var page = "<? echo $_SERVER['PHP_SELF']; ?>";

$.post("storeip.php","ip="+ip+"&page="+page);
});
</script>

「storeip.php」ファイルで投稿された「ip」および「page」変数を管理できます

于 2013-04-14T08:25:58.390 に答える