修复日志页面卡顿我呢提
This commit is contained in:
Regular → Executable
+32
-4
@@ -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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user