PR(記事内にアフィリエイト広告が含まれています)
スポンサーリンク
トラブル

Moguraでの表示速度低下への対応(2)

前回はアクセス解析が重くなってきたなー、と感じたら手動でphpMyAdminからゴミ箱アイコンで osaka_ua テーブルのデータをTruncateする、といった事を行ってたんですが、それすらも面倒になってきたので思い切った施策をしました。
要は osaka_ua テーブルにデータが追加・変更されなければ重くならないので、最初から追加させないようにしていたわけです。アクセス解析で知りたいのは、主にカウント数とリンク元のURLくらいなので、ユーザーエージェント用のテーブルはまぁ空でもいいか、って感じですので。
変更点は下記になります。


初期設定から変えてなければ、実テーブル名は osaka_ua なんですが、ソース内では定数指定してあります(config.phpの140行目を参照)。それらがINSERTやUPDATEされてる所をコメント化してます。
変更部分が太字になります(まぁ最初と最後を /* と */ で囲んでるだけですね)。

//writelog.phpの390行あたり
//UA追加
//2014/02/20 takehana_del_s
/*
$sql = "INSERT INTO ".constant("DB_TABLE_UA")." (ua_name,os,os_v,brow,brow_v) values (".$ua.",'".$ua_list["os"]."','".$ua_list["os_v"]."','".$ua_list["browser"]."','".$ua_list["browser_v"]."');";
$res = $db->query($sql);
WriteClass::check_err($res);
*/
//2014/02/20 takehana_del_e
//control_panel フォルダ内 load_updata_ua.php の9行目あたり
/*=========================================*/
/* UA更新                                  */
/*=========================================*/
$updata_count = 0;
//2014/02/20 takehana_del_s
/*
$sql = array();
$sql["from"] = constant("DB_TABLE_UA");
$res = $db->query(mk_sql($sql));
check_err($res);
while ($row = $res->fetchRow(DB_FETCHMODE_ASSOC)){
if(!$row["ua_name"]) continue;
$ua = array();
list($ua["browser"], $ua["browser_v"], $ua["os"], $ua["os_v"]) = getuseragent($row["ua_name"], "../");
if($row["os"] === $ua["os"] && $row["os_v"] === $ua["os_v"] && $row["brow"] === $ua["browser"] && $row["brow_v"] === $ua["browser_v"]){
continue;
}
$sql = "UPDATE ".constant("DB_TABLE_UA")." SET ".
($row["os"] === $ua["os"] ? '' : "os = '".$ua["os"]."',").
($row["os_v"] === $ua["os_v"] ? '' : "os_v = '".$ua["os_v"]."',").
($row["brow"] === $ua["browser"] ? '' : "brow = '".$ua["browser"]."',").
($row["brow_v"] === $ua["browser_v"] ? '' : "brow_v = '".$ua["browser_v"]."',");
$sql = substr($sql, 0, -1)." WHERE ua_id = ".$row["ua_id"]." LIMIT 1;";
$sql = @mb_convert_encoding($sql, "UTF-8", "ASCII,JIS,UTF-8,EUC-JP,SJIS");
$res2 = $db->query($sql);
check_err($res2);
$row["os"] = $ua["os"];
$row["os_v"] = $ua["os_v"];
$row["brow"] = $ua["browser"];
$row["brow_v"] = $ua["browser_v"];
$form_val[] = $row;
$updata_count++;
}
$res->free();
*/
//2014/02/20 takehana_del_e

とりあえずテーブル osaka_ua にはデータが追加されなくなったので、けっこう処理が軽くなったのではないでしょうか。これで自分的に望んだ挙動になったので、このまま運用してみます。

コメント

タイトルとURLをコピーしました