美文网首页
日志打点接口耗时脚本(原创)

日志打点接口耗时脚本(原创)

作者: BigXue | 来源:发表于2018-12-24 16:42 被阅读0次

    <?php

    namespace lib;

    /**

    * NoticeLogClass

    * User: xuexiaoyang

    * Date: 2018/7/3

    * Time: 17:58

    */

    /**

    * -----------------------------------接口优化辅助日志-----------------------------------

    * 记录接口耗时,可以在同等日志按天为单位

    * 记录地址:code/framework/logs/Notice/

    *

    *

    */

    class NoticeLog

    {

        private static $startName = [];  //记录开始标识

        private static $endName  = [];  //记录结束标识

        /***

        * @param  $star_name

        * @author xuexiaoyang

        * @date  2018/12/24

        * @time  16:21

        * @return bool| 赋值

        * 日志准备开始(主要进行赋值操作)

        */

        public static function start(string $star_name)

    {

            if (empty($star_name)) {

                return false;

            }

            $data[$star_name] = self::_getTime();

            self::$startName  = array_merge(self::$startName, $data);

        }

        /***

        * @param  $end_name

        * @author xuexiaoyang

        * @date  2018/12/24

        * @time  16:21

        * @return bool| 赋值

        * 日志准备结束(主要进行赋值操作)

        */

        public static function stop(string $end_name)

    {

          if (empty($end_name)) {

              return false;

          }

            $data[$end_name] = self::_getTime();

            self::$endName = array_merge(self::$endName, $data);

        }

        /***

        * @author xuexiaoyang

        * @date  2018/12/24

        * @time  16:21

        * @return int

        * 日志获取对应的微妙(主要进行赋值操作)

        */

        private static function _getTime()

    {

            list($msec, $sec) = explode(' ', microtime());

            $msectime =  (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);

            return $msectime;

        }

        /***

        * @author xuexiaoyang

        * @date  2018/12/24

        * @time  16:21

        * @return bool | 写入

        * 日志写入(主要进行日志写入操作)

        */

        public static function run()

    {

            if (empty(self::$startName)) {

                return false;

            }

            $endData = self::$endName;

            $str = '[http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'] performance:';

            foreach (self::$startName as $k => $v) {

                if (isset($endData[$k])) {

                    $vv  = $endData[$k];

                    $str .= '['.$k.':'.ceil($vv-$v). 'ms] ';

                }

    }

            runtime_log("Notice/optimize", $str);

        }

    }

    ?>

    附一张调用图:

    run()方法要记得调用并且在最下面,这样才会如数写入。

    附一张监控图:

    里面带有访问的URL 带有对应标识的耗时记录(MS为单位),方便实用

    坚持创作想法 ~

    相关文章

      网友评论

          本文标题:日志打点接口耗时脚本(原创)

          本文链接:https://www.haomeiwen.com/subject/wcmzkqtx.html