Commit 7574a3c7 authored by Liu lu's avatar Liu lu
Browse files

日志批量更新优化

parent 73853af6
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -4,6 +4,7 @@ namespace Meibuyu\Micro\Aspect;
use Hyperf\Di\Annotation\Aspect;
use Hyperf\Di\Annotation\Aspect;
use Hyperf\Di\Aop\AbstractAspect;
use Hyperf\Di\Aop\AbstractAspect;
use Hyperf\Di\Aop\ProceedingJoinPoint;
use Hyperf\Di\Aop\ProceedingJoinPoint;
use Hyperf\HttpServer\Contract\RequestInterface;
use Meibuyu\Micro\Annotation\LogTrace;
use Meibuyu\Micro\Annotation\LogTrace;
use Meibuyu\Micro\Handler\LogTrace\LogTraceHandler;
use Meibuyu\Micro\Handler\LogTrace\LogTraceHandler;


@@ -25,9 +26,13 @@ class LogTraceAspect extends AbstractAspect


    public function process(ProceedingJoinPoint $proceedingJoinPoint)
    public function process(ProceedingJoinPoint $proceedingJoinPoint)
    {
    {
        $originParams = [
            'called_params'=>$proceedingJoinPoint->getArguments(),
            'http_params'=>make(RequestInterface::class)->all()
        ];
        LogTraceHandler::createLogTrace(
        LogTraceHandler::createLogTrace(
            $proceedingJoinPoint->className.'@'.$proceedingJoinPoint->methodName,
            $proceedingJoinPoint->className.'@'.$proceedingJoinPoint->methodName,
            $proceedingJoinPoint->getArguments()
            $originParams
        );
        );
        $result =  $proceedingJoinPoint->process();
        $result =  $proceedingJoinPoint->process();
        LogTraceHandler::recordProcess('返回结果:'.json_encode($result));
        LogTraceHandler::recordProcess('返回结果:'.json_encode($result));
+1 −3
Original line number Original line Diff line number Diff line
@@ -83,7 +83,6 @@ class LogTraceHandler
        if(!Coroutine::inCoroutine()) return;
        if(!Coroutine::inCoroutine()) return;
        container(LogTraceQueue::class)->addToQueue([
        container(LogTraceQueue::class)->addToQueue([
            'request_id'=>self::getRequestId(),
            'request_id'=>self::getRequestId(),
            'process_info'=>'',
            'is_completed'=>YES
            'is_completed'=>YES
        ]);
        ]);
        //LogTrace::where('request_id', self::getRequestId())->update(['is_completed' => YES]);
        //LogTrace::where('request_id', self::getRequestId())->update(['is_completed' => YES]);
@@ -117,8 +116,7 @@ class LogTraceHandler


        container(LogTraceQueue::class)->addToQueue([
        container(LogTraceQueue::class)->addToQueue([
            'request_id'=>self::getRequestId($isInAsyncCoroutine),
            'request_id'=>self::getRequestId($isInAsyncCoroutine),
            'process_info'=>$logInfo,
            'process_info'=>$logInfo
            'is_completed'=>NO
        ]);
        ]);
//        $log = LogTrace::where('request_id', self::getRequestId())->first();
//        $log = LogTrace::where('request_id', self::getRequestId())->first();
//        if(empty($log)) return ;
//        if(empty($log)) return ;
+9 −2
Original line number Original line Diff line number Diff line
@@ -22,10 +22,14 @@ class LogTraceQueue extends RedisQueueBatchHandler
    function batchDeal($dataArr)
    function batchDeal($dataArr)
    {
    {
        $updateArr = [];
        $updateArr = [];
        $updateMarkComplete = [];

        foreach ($dataArr as $arr){
        foreach ($dataArr as $arr){


            if(isset($arr['is_completed'])&&$arr['is_completed']==YES){
                $updateMarkComplete[]= $arr['request_id'] ;continue;
            }
            $updateArr[$arr['request_id']]['request_id'] = $arr['request_id'];
            $updateArr[$arr['request_id']]['request_id'] = $arr['request_id'];
            $updateArr[$arr['request_id']]['is_completed'] = $arr['is_completed'];


            $process_info = isset($updateArr[$arr['request_id']]['process_info'])?
            $process_info = isset($updateArr[$arr['request_id']]['process_info'])?
                             $updateArr[$arr['request_id']]['process_info']:'';
                             $updateArr[$arr['request_id']]['process_info']:'';
@@ -49,7 +53,10 @@ class LogTraceQueue extends RedisQueueBatchHandler
            return $item;
            return $item;
        },$updateArr);
        },$updateArr);



        //批量更新
        if(!empty($updateMarkComplete)){
            LogTrace::whereIn('request_id',$updateMarkComplete)->update(['is_completed'=>YES]);
        }
        LogTrace::getModel()->batchUpdateByField(array_values($updateArr),'request_id');
        LogTrace::getModel()->batchUpdateByField(array_values($updateArr),'request_id');
    }
    }