PHP生成唯一RequestID类
龙行 PHP 2022-10-30
156 0评论
PHP生成唯一RequestID类
<?php
namespace tool;
/**
* PHP生成唯一RequestID类
* Date: 2022-10-12
* Author: lt
* Version: 1.0
*
* Description:
* PHP实现生成唯一RequestID类,使用session_create_id()与uniqid()方法实现,保证唯一性。
*
* Func:
* public generate 生成唯一请求id
* private format 格式化请求id
*/
class RequestID
{
/**
* 生成唯一请求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 String $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);
}
}