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