2017-06-02 1 views
0

各サブページに誰が入力されたかを制御し、この情報をMySQLに挿入する必要があります。私は情報(userid、サブページ、subpageid、datetime)を取得するMYSQLテーブルを持っています。レコードのリストを作成して後で挿入するPHP MYSQL

function logstore(){ 
global $DB, $USER, $CFG; 


$protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https') 
=== FALSE ? 'http' : 'https'; 
$host  = $_SERVER['HTTP_HOST']; 
$script = $_SERVER['SCRIPT_NAME']; 

$currentUrl = $protocol . '://' . $host . $script; 

$newsurl = $CFG->wwwroot.'/news/view.php'; 
$produrl = $CFG->wwwroot.'/prod/view.php'; 
$materialurl = $CFG->wwwroot.'/material/index.php'; 


$datetime = date_create()->format('Y-m-d H:i:s'); 


$records = new stdClass(); 
$records->userid = $USER->id; 
if($currentUrl == $newsurl){ 
    $records->activity = 'news'; 
    $records->activityid = $_GET['id']; 
}elseif ($currentUrl == $produrl){ 
    $records->activity = 'prod'; 
    $records->activityid = $_GET['id']; 
} 
elseif ($currentUrl == $materialurl){ 
    $records->activity = 'material'; 
    $records->activityid = $_GET['id']; 
} 

$records->datetime = $datetime; 

$DB->insert_record('logstore', $records);} 

Imが/news/view.php、/prod/view.php、/material/index.phpの上に、この関数を呼び出します。

うまく動作しますが、少しはそれを最適化する必要があります。 DBが無料のときにこれらのレコードを挿入する方法はありますか?リストを作成して1時間ごとに挿入する方法はありますか?

//編集

私はINSERTが遅れてみましたが、その私のDBで作業していない:(

答えて

0

DBがフリーになるまでクエリを遅らせるためのMoodle/PHPでの標準的な方法はありません。 "のINSERT DELAY"あなたがここに見ることができるように、最新のMySQLにdepracatedさ:https://dev.mysql.com/doc/refman/5.7/en/insert-delayed.html 私は2つの選択肢を提案することができます。http://mysqltuner.plを使用してDBのパフォーマンスをチェック

  1. を - 多分より多くのメモリ/キャッシュは、パフォーマンスに役立てることができます

  2. このログには別のサーバーを使用してください。負荷がより多くのサーバーに分散されるようにします。

関連する問題