修复日志页面卡顿我呢提

This commit is contained in:
root
2026-06-15 22:42:59 +08:00
parent 1a52201ec7
commit bcb9f293a6
151 changed files with 2461 additions and 471 deletions
Regular → Executable
+32 -4
View File
@@ -5,6 +5,7 @@
require_once dirname(__DIR__) . '/DbHelper.php';
require_once __DIR__ . '/VisitorLogSchema.php';
require_once __DIR__ . '/VisitorLogQueue.php';
require_once __DIR__ . '/VisitorLogVtimes.php';
class VisitorLogWorker
{
@@ -65,12 +66,14 @@ class VisitorLogWorker
VisitorLogSchema::ensureColumns($conn);
VisitorLogSchema::ensureIndexes($conn);
$logs = VisitorLogVtimes::mergeIntoLogs($logs, $conn);
$data = self::escapeLogs($conn, $logs);
$d = static function ($key) use ($data, $conn) {
return array_key_exists($key, $data) ? $data[$key] : cloak_db_escape($conn, '');
};
list($simCols, $simVals) = self::simulationInsertFragment($data);
$sql = "INSERT INTO `visitor_logs`(`campagin_id`, `visit_md5_code`, `domain`, `visit_date`, `IP`, `country`, `result`, `reason`, `referer`, `client`, `browser`, `page`, `language`, `user_agent`, `http_referer`, `accept_language_raw`, `judge_timing`, `fp_url`, `device`, `api_by_request`, `api_by_response`, `api_risk_request`, `api_risk_response`) VALUES ('"
$sql = "INSERT INTO `visitor_logs`(`campagin_id`, `visit_md5_code`, `domain`, `visit_date`, `IP`, `country`, `result`, `reason`, `referer`, `vtimes`, `client`, `browser`, `page`, `language`, `user_agent`, `http_referer`, `accept_language_raw`, `judge_timing`, `fp_url`, `device`, `api_by_request`, `api_by_response`, `api_risk_request`, `api_risk_response`{$simCols}) VALUES ('"
. $d('campagin_id') . "','"
. $d('visit_md5_code') . "','"
. $d('site_name') . "','"
@@ -80,6 +83,7 @@ class VisitorLogWorker
. $d('result') . "','"
. $d('reason') . "','"
. $d('v_referer') . "','"
. (int) ($data['vtimes'] ?? 1) . "','"
. $d('Client') . "','"
. $d('v_Browser') . "','"
. $d('v_PageURL') . "','"
@@ -93,7 +97,8 @@ class VisitorLogWorker
. $d('api_by_request') . "','"
. $d('api_by_response') . "','"
. $d('api_risk_request') . "','"
. $d('api_risk_response') . "')";
. $d('api_risk_response') . "'"
. $simVals . ')';
if ($conn->query($sql) !== true) {
VisitorLogQueue::logError('insert_full: ' . $conn->error . ' | ' . $sql);
@@ -120,12 +125,14 @@ class VisitorLogWorker
VisitorLogSchema::ensureColumns($conn);
VisitorLogSchema::ensureIndexes($conn);
$logs = VisitorLogVtimes::mergeIntoLogs($logs, $conn);
$data = self::escapeLogs($conn, $logs);
$d = static function ($key) use ($data, $conn) {
return array_key_exists($key, $data) ? $data[$key] : cloak_db_escape($conn, '');
};
list($simCols, $simVals) = self::simulationInsertFragment($data);
$sql = "INSERT INTO `visitor_logs`(`campagin_id`, `visit_md5_code`, `domain`, `visit_date`, `IP`, `country`, `result`, `reason`, `client`, `browser`, `language`, `fp_url`, `device`) VALUES ('"
$sql = "INSERT INTO `visitor_logs`(`campagin_id`, `visit_md5_code`, `domain`, `visit_date`, `IP`, `country`, `result`, `reason`, `vtimes`, `client`, `browser`, `language`, `fp_url`, `device`{$simCols}) VALUES ('"
. $d('campagin_id') . "','"
. $d('visit_md5_code') . "','"
. $d('site_name') . "','"
@@ -134,11 +141,13 @@ class VisitorLogWorker
. $d('country') . "','"
. $d('result') . "','"
. $d('reason') . "','"
. (int) ($data['vtimes'] ?? 1) . "','"
. $d('Client') . "','"
. $d('v_Browser') . "','"
. $d('accept_language') . "','"
. $d('fp_url') . "','"
. $d('device') . "')";
. $d('device') . "'"
. $simVals . ')';
if ($conn->query($sql) !== true) {
VisitorLogQueue::logError('insertMinimal: ' . $conn->error);
@@ -216,6 +225,25 @@ class VisitorLogWorker
return $data;
}
/**
* @param array<string, string> $data escaped log fields
* @return array{0:string,1:string}
*/
private static function simulationInsertFragment(array $data)
{
if (empty($data['is_simulation']) && !array_key_exists('sim_source_log_id', $data)) {
return ['', ''];
}
$cols = ', `is_simulation`, `sim_source_log_id`';
$isSim = (int) ($data['is_simulation'] ?? 0);
if (!empty($data['sim_source_log_id'])) {
$vals = ", '{$isSim}', '" . (int) $data['sim_source_log_id'] . "'";
} else {
$vals = ", '{$isSim}', NULL";
}
return [$cols, $vals];
}
/**
* @return mysqli|null
*/