debug
This commit is contained in:
90
code/app/task/collection/visitlogs/ContentStatsCol.php
Normal file
90
code/app/task/collection/visitlogs/ContentStatsCol.php
Normal file
@@ -0,0 +1,90 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\task\collection\visitlogs;
|
||||
|
||||
|
||||
use app\admin\model\XiaoShuoFenLeiModel;
|
||||
use app\admin\model\XiaoShuoXiangQingModel;
|
||||
use app\admin\model\XiaoShuoZhangJieModel;
|
||||
use app\task\collection\PullDataColBase;
|
||||
use GuzzleHttp\Cookie\CookieJar;
|
||||
use processor\ImageProcessor;
|
||||
use think\facade\Cache;
|
||||
use QL\QueryList;
|
||||
use app\admin\model\VisitLogsModel;
|
||||
use app\admin\model\ContentStatsModel;
|
||||
|
||||
/**
|
||||
* @mixin think\Model
|
||||
*/
|
||||
class ContentStatsCol extends PullDataColBase
|
||||
{
|
||||
public function run()
|
||||
{
|
||||
var_dump('ContentStatsCol');
|
||||
|
||||
try {
|
||||
// 定义时间范围统计的周期类型和 SQL 表达式
|
||||
$arrPeriods = [
|
||||
'day' => "DATE(vil_timestamp)", // 按日统计
|
||||
'week' => "YEARWEEK(vil_timestamp)", // 按周统计
|
||||
'month' => "DATE_FORMAT(vil_timestamp, '%Y-%m')", // 按月统计
|
||||
'quarter' => "CONCAT(YEAR(vil_timestamp), '-', QUARTER(vil_timestamp))", // 按季度统计
|
||||
'year' => "YEAR(vil_timestamp)" // 按年统计
|
||||
];
|
||||
|
||||
foreach ($arrPeriods as $periodName => $groupExpression) {
|
||||
var_dump($groupExpression);
|
||||
$results = VisitLogsModel::where('vil_is_spider', 0) // 排除爬虫访问
|
||||
->field([
|
||||
'vil_content_type',
|
||||
'vil_content_id',
|
||||
"$groupExpression" => 'stat_date', // 根据周期分组
|
||||
'COUNT(*)' => 'pv', // PV
|
||||
'COUNT(DISTINCT vil_ip)' => 'uv' // UV
|
||||
])
|
||||
->group('vil_content_type, vil_content_id, stat_date')
|
||||
->select()->toArray();
|
||||
// var_dump($results);
|
||||
foreach ($results as $result) {
|
||||
|
||||
$ContentStatsModel = [
|
||||
'cs_content_type' => $result['vil_content_type'],
|
||||
'cs_content_id' => $result['vil_content_id'],
|
||||
'cs_stat_date' => $result['stat_date'],
|
||||
'cs_stat_period' => $periodName, // 周期类型(day, week, month, quarter, year)
|
||||
'cs_pv' => $result['pv'],
|
||||
'cs_uv' => $result['uv'],
|
||||
'cs_md5' => md5($result['vil_content_type'].$result['vil_content_id'].$result['stat_date'].$periodName),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
var_dump($ContentStatsModel);
|
||||
ContentStatsModel::add($ContentStatsModel);
|
||||
// var_dump($r);
|
||||
// 插入或更新到统计表
|
||||
// ContentStatsModel::insertOrUpdate([
|
||||
// 'cs_content_type' => $result['vil_content_type'],
|
||||
// 'cs_content_id' => $result['vil_content_id'],
|
||||
// 'cs_stat_date' => $result['stat_date'],
|
||||
// 'cs_stat_period' => $periodName, // 周期类型(day, week, month, quarter, year)
|
||||
// 'cs_pv' => $result['pv'],
|
||||
// 'cs_uv' => $result['uv'],
|
||||
// 'updated_at' => date('Y-m-d H:i:s'),
|
||||
// ], [
|
||||
// 'cs_content_type' => $result['vil_content_type'],
|
||||
// 'cs_content_id' => $result['vil_content_id'],
|
||||
// 'cs_stat_date' => $result['stat_date'],
|
||||
// 'cs_stat_period' => $periodName,
|
||||
// ]);
|
||||
}
|
||||
}
|
||||
|
||||
} catch (\Exception $e) {
|
||||
// 记录异常日志
|
||||
//\think\facade\Log::error('ContentStatsTask error: ' . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
47
code/app/task/collection/visitlogs/VisitLogsCol.php
Normal file
47
code/app/task/collection/visitlogs/VisitLogsCol.php
Normal file
@@ -0,0 +1,47 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace app\task\collection\visitlogs;
|
||||
|
||||
|
||||
use app\admin\model\XiaoShuoFenLeiModel;
|
||||
use app\admin\model\XiaoShuoXiangQingModel;
|
||||
use app\admin\model\XiaoShuoZhangJieModel;
|
||||
use app\task\collection\PullDataColBase;
|
||||
use GuzzleHttp\Cookie\CookieJar;
|
||||
use processor\ImageProcessor;
|
||||
use think\facade\Cache;
|
||||
use QL\QueryList;
|
||||
use app\admin\model\VisitLogsModel;
|
||||
|
||||
/**
|
||||
* @mixin think\Model
|
||||
*/
|
||||
class VisitLogsCol extends PullDataColBase
|
||||
{
|
||||
public function add($arrData)
|
||||
{
|
||||
|
||||
try {
|
||||
// 'vil_ip', 'vil_url', 'vil_content_id', 'vil_content_type', 'vil_method'
|
||||
if (empty($arrData['vil_ip']) || empty($arrData['vil_url']) || empty($arrData['vil_content_id']) || empty($arrData['vil_content_type']) || empty($arrData['vil_method'])) {
|
||||
var_dump("信息不全!");
|
||||
}else{
|
||||
$strLocation = '';
|
||||
// if(!empty($arrData['vil_ip'])){
|
||||
// $strLocation = getLocationByIp($arrData['vil_ip']);
|
||||
// }
|
||||
$arrData['vil_location'] = $strLocation;
|
||||
|
||||
VisitLogsModel::add($arrData);
|
||||
}
|
||||
|
||||
|
||||
} catch (\Throwable $T) {
|
||||
//var_dump($T);
|
||||
throw $T;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user