• 记录程序执行之间,接口调用时间到日志文件或数据库


    1、获取毫秒

    private function getMillisecond() {
        list($s1, $s2) = explode(' ', microtime());
        return (float)sprintf('%.0f', (floatval($s1) + floatval($s2)) * 1000);
    }
    

    2、获取接口调用前,调用后的时间

    $t1 = $this->getMillisecond(true);
    $result = json_decode(Http::doPostJson($url,$data),true);
    $t2 = $this->getMillisecond(true);
    $this->miclog($t1,$t2,__METHOD__,$result,$data['funid']);
    

    3、记录日志

    private function miclog($t1,$t2,$name,$result = [],$funid = ''){
        $lasttime = ($t2 - $t1).'ms';
        $content = date('Y-m-d H:i:s').'   '.$lasttime.'   '.$name.'   '.$funid;
        file_put_contents('/tmp/ssyv5/jg_micro.log',$content.PHP_EOL,FILE_APPEND);
    
    
        $length_time = $t2 - $t1;
        if (200 < $length_time){
            file_put_contents('/tmp/ssyv5/jg_micro_200.log',$content.PHP_EOL,FILE_APPEND);
        }elseif (100 < $length_time){
            file_put_contents('/tmp/ssyv5/jg_micro_100.log',$content.PHP_EOL,FILE_APPEND);
        }
    
        if (!$result){
            file_put_contents('/tmp/ssyv5/jg_micro_die.log',$content.PHP_EOL,FILE_APPEND);
        }
    
        if ($length_time >= 5000){
            file_put_contents('/tmp/ssyv5/jg_micro_overtime.log',$content.PHP_EOL,FILE_APPEND);
            $this->addEditJgLog($funid,$length_time);
        }
    }
    

    4、记录数据库

    protected function addEditJgLog($funid,$length_time) {
        // 记录到数据库
        $jg_slow_log = M('jg_slow_log');
        $where['funid'] = $funid;
        $date = date('Y-m-d');
        $where['date'] = $date;
        $exist = $jg_slow_log->where($where)->find();
        if (!$exist) { // 添加
            $add_data = [
                'funid' => $funid,
                'date'  => $date,
                'times' => 1,
                'min_micro'  => $length_time,
                'max_micro'  => $length_time,
                'update_time' => date('Y-m-d H:i:s'),
                'create_time' => date('Y-m-d H:i:s'),
            ];
            $jg_slow_log->add($add_data);
        } else { // 修改
            $max_micro = (int)$exist['max_micro'];
            $min_micro = (int)$exist['min_micro'];
            $times = ++$exist['times']; // 先加1,再赋值给变量
            if ((int)$length_time > $max_micro) {
                $max_micro = $length_time;
            }
            if ((int)$length_time < $min_micro) {
                $min_micro = $length_time;
            }
            $edit_data = [
                'min_micro'  => $min_micro,
                'max_micro'  => $max_micro,
                'times'      => $times,
                'update_time' => date('Y-m-d H:i:s'),
            ];
            $jg_slow_log->where(['id'=>$exist['id']])->save($edit_data);
        }
    }
    
  • 相关阅读:
    docker工具链概述
    Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (二)
    Microsoft.AspNetCore.Authentication.Cookies从入门到精通 (一)
    阿贝云免费虚拟主机使用体验
    Topshelf 秒建 Windows 服务
    一次兼职项目开发的经历
    修改了my.ini没有效果,MySql的字符集还是没有变成utf8——mysql中文乱码
    【转载】Fiddler工具使用介绍(一)
    C#中$的用法
    系统开发常用模块
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10949137.html
Copyright © 2020-2023  润新知