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

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为单位),方便实用


坚持创作想法 ~

你可能感兴趣的:(日志打点接口耗时脚本(原创))