public function logsArchive()
{
$logsTableName = $this->tablePrefix . 'x_logs';
$today = getDate(time());
// 上个月底的时间
$dayBeforeTime = strtotime(date('Y-m-t 23:59:59', strtotime('-1 month')));
// 主表是否存在31天前的知识
if ($this->where('ctime<=' . $dayBeforeTime)->count()) {
// 搜索下有多少个月的数据需要归档
$findDate = D('')->query("SELECT DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m') AS lists FROM {$logsTableName} WHERE ctime <= " . $dayBeforeTime . " GROUP BY DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m')");
// 每个月归档
foreach ($findDate as $value) {
$dataInfo = explode('-', $value['lists']);
// 归档表的名称
$archiveTableName = $logsTableName . '_' . $dataInfo[0] . '_' . $dataInfo[1];
// 先创建表
if (D('')->query("DESC {$archiveTableName}") == false) {
D('')->query("CREATE TABLE {$archiveTableName} LIKE {$logsTableName}");
}
$querySql = "DATE_FORMAT(FROM_UNIXTIME(ctime),'%Y-%m') = '" . $value[lists] . "'";
$result = D('')->query("INSERT INTO {$archiveTableName} SELECT * FROM {$logsTableName} WHERE {$querySql}");
}
$this->where($querySql)->delete();
return true;
} else {
return false;
}
}