77 lines
2.2 KiB
PHP
77 lines
2.2 KiB
PHP
<?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()
|
|
]));
|
|
}
|
|
}
|
|
}
|