SCTMES_V5/mes_in_sct/process/LogProcess.php

77 lines
2.2 KiB
PHP
Raw Permalink Normal View History

2025-06-14 18:55:09 +08:00
<?php
namespace process;
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use libs\db\Db;
class LogProcess
{
public function onWorkerStart(Worker $worker)
{
}
public function onMessage(TcpConnection $connection, $data)
{
$data = json_decode($data, true);
// 判断是否存在日志表
$sql = sprintf(
"SELECT EXISTS (SELECT 1 FROM pg_tables WHERE schemaname='public' AND tablename='%s');",
'hf_logger_data'
);
$ret = Db::fetch($sql);
if (empty($ret)) {
echo '数据库不存在接口日志表,请增加!' . PHP_EOL;
$connection->send(serialize([
'type' => 'error',
'msg' => '数据库不存在接口日志表,请增加!'
]));
}
// 获取表字段
$sql = sprintf(
"SELECT column_name,data_type FROM information_schema.columns WHERE table_schema='public' AND table_name='%s';",
'hf_logger_data'
);
$ret = Db::fetchAll($sql);
$date = date('Y-m-d H:i:s');
$key = 'create_time,';
$val = "'{$date}',";
foreach ($ret as $value) {
if (isset($data[$value['column_name']]) && !empty($data[$value['column_name']])) {
$key .= "{$value['column_name']},";
if (is_string($data[$value['column_name']])) {
$val .= "'{$data[$value['column_name']]}',";
} else {
$val .= "{$data[$value['column_name']]},";
}
}
}
try {
$sql = sprintf(
"INSERT INTO hf_logger_data(%s) VALUES (%s)",
rtrim($key, ','),
rtrim($val, ',')
);
$ret = Db::query($sql);
$connection->send(json_encode([
'type' => 'success',
'msg' => $ret
]));
} catch (\Exception $e) {
echo $e->getMessage() . PHP_EOL;
$connection->send(json_encode([
'type' => 'error',
'msg' => $e->getMessage()
]));
}
}
}