没有合适的资源?快使用搜索试试~ 我知道了~
本文实例讲述了PHP实现的生成唯一RequestID类。分享给大家供大家参考,具体如下: 这里介绍PHP生成唯一RequestID类,使用session_create_id()与uniqid()方法,保证唯一性,提供完整代码及演示,方便大家学习使用。 现在的系统设计一般使用分布式系统,一个请求可能要调用几个微服务处理,最后再把结果返回。当请求出现问题时,我们很难去跟踪是哪个微服务出现问题。 每个请求访问服务器时,我们可以给这个访问加入一个唯一标识(RequestID),在请求开始,请求过程中,及请求结束时,把这个请求流程关键的数据写入日志(例如访问时的参数,经过那些方法,微服务,结束时返回的数
资源推荐
资源详情
资源评论
PHP实现的生成唯一实现的生成唯一RequestID类完整示例类完整示例
本文实例讲述了PHP实现的生成唯一RequestID类。分享给大家供大家参考,具体如下:
这里介绍PHP生成唯一RequestID类,使用session_create_id()与uniqid()方法,保证唯一性,提供完整代码及演示,方便大家
学习使用。
现在的系统设计一般使用分布式系统,一个请求可能要调用几个微服务处理,最后再把结果返回。当请求出现问题时,我们很
难去跟踪是哪个微服务出现问题。
每个请求访问服务器时,我们可以给这个访问加入一个唯一标识(RequestID),在请求开始,请求过程中,及请求结束时,把
这个请求流程关键的数据写入日志(例如访问时的参数,经过那些方法,微服务,结束时返回的数据等),当访问出现问题时
用于参考,方便追踪到问题。
例如一个请求需要经过几个微服务再返回输出
请求->A->B->C-A->输出
如果访问过程没有输出,或输出错误,我们可以根据RequestID找到A,B,C对应的日志,检查是哪个服务出现问题。
代码如下:
RequestID.class.php
<?php
/**
* PHP生成唯一RequestID类
* Date: 2018-04-10
* Author: fdipzone
* Version: 1.0
*
* Description:
* PHP实现生成唯一RequestID类,使用session_create_id()与uniqid()方法实现,保证唯一性。
*
* Func:
* public generate 生成唯一请求id
* private format 格式化请求id
*/
class RequestID{ // class start
/**
* 生成唯一请求id
* @return String
*/
public static function generate(){
// 使用session_create_id()方法创建前缀
$prefix = session_create_id(date('YmdHis'));
// 使用uniqid()方法创建唯一id
$request_id = strtoupper(md5(uniqid($prefix, true)));
// 格式化请求id
return self::format($request_id);
}
/**
* 格式化请求id
* @param String $request_id 请求id
* @param Array $format 格式
* @return String
*/
private static function format($request_id, $format='8,4,4,4,12'){
$tmp = array();
$offset = 0;
$cut = explode(',', $format);
// 根据设定格式化
if($cut){
foreach($cut as $v){
$tmp[] = substr($request_id, $offset, $v);
$offset += $v;
}
}
// 加入剩余部分
if($offset<strlen($request_id)){
$tmp[] = substr($request_id, $offset);
}
return implode('-', $tmp);
}
} // class end
?>
资源评论
weixin_38683488
- 粉丝: 4
- 资源: 957
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功