【THK Analytics】古いログを自動で削除する

自己責任で!!

THK Analytics ver.1.24で動作確認しました

手動でログ削除

THK Analyticsの管理画面から、手動で削除することはできます。最初、このURLをPHPから呼び出そうと思ったのですが、やり方の方向としては微妙かなぁと思ってやめ。

DBの中身を見てみる

中身を見てみると、thk_log_年月 のようにログは、年月別のテーブルになっていました。ほかのテーブルのデータを見る限り、このテーブルを削除するだけで問題なさそうなので、その路線で・・。

念のため、THK AnalyticsのPHPソースを少し見てみたけど、断念。

DBの接続情報

THK Analyticsは、DBにデータを保存しています。DBの接続情報はインストールの時に設定したのでわかるかと思います。

thk/setting/database.php に保存されてるので、その中身を見てもわかります。

ログ削除PHPの作成

<?php
//-----------------------
// ログ削除 関数
//-----------------------
function drop_log($log_name,$host,$user,$pass,$db){
	$mysqli = new mysqli($host,$user,$pass,$db);

	if ($mysqli->connect_errno) {
	    printf("Connect failed: %s\n", $mysqli->connect_error);
	    return;
	}

	$mysqli->query("DROP TABLE ".$log_name);

	$mysqli->close();
}

//----------------------
// MAIN
//----------------------
//--------------------------
// 環境に合わせて、書き換える
$host ="mysql.example.com";
$user ="db_user";
$pass ="db_pass";
$db ="db_name";
$table_prefix ="thk_";
//---------------------------

$log_name =$table_prefix."log_".date('Ym', strtotime('-3 month')); 
drop_log($log_name,$host,$user,$pass,$db);

echo $log_name." 削除";

3か月前のログテーブルを削除するPHPを上記のように抱く制します。テーブルを削除(DROP TABLE)するので、DBをバックアップを取ってから、動作確認等を行うようにしてください。DROP TABLEされたテーブル(データ)は復活できません。

Cron設定

Cron設定で、1日1回呼び出すようにします。

Cron → シェルスクリプト(logdel.sh) → ログ削除PHP(delete-thk-log.php)

上記のように、シェルスクリプト(logdel.sh)を介して、ログ削除PHP(delete-thk-log.php)を呼び出します。

#!/bin/sh
echo "st - "`date` >> ./log.txt

curl -k -s  -o /dev/null "https://ex.example.com/tools/delete-thk-log.php"

動画での説明

2年前ぐらいから使用してます。

スポンサーリンク

関連記事