濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例

PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例

熱門標(biāo)簽:h5 地圖標(biāo)注 哈爾濱400電話辦理到易號(hào)網(wǎng) 智能外呼電銷系統(tǒng) 電銷機(jī)器人-快迭智能 拉薩打電話機(jī)器人 高識(shí)別電銷機(jī)器人 合肥外呼系統(tǒng)app 寶安400電話辦理 沈陽人工智能電銷機(jī)器人公司

本文實(shí)例講述了PHP實(shí)現(xiàn)的生成唯一RequestID類。分享給大家供大家參考,具體如下:

這里介紹PHP生成唯一RequestID類,使用session_create_id()與uniqid()方法,保證唯一性,提供完整代碼及演示,方便大家學(xué)習(xí)使用。

現(xiàn)在的系統(tǒng)設(shè)計(jì)一般使用分布式系統(tǒng),一個(gè)請(qǐng)求可能要調(diào)用幾個(gè)微服務(wù)處理,最后再把結(jié)果返回。當(dāng)請(qǐng)求出現(xiàn)問題時(shí),我們很難去跟蹤是哪個(gè)微服務(wù)出現(xiàn)問題。

每個(gè)請(qǐng)求訪問服務(wù)器時(shí),我們可以給這個(gè)訪問加入一個(gè)唯一標(biāo)識(shí)(RequestID),在請(qǐng)求開始,請(qǐng)求過程中,及請(qǐng)求結(jié)束時(shí),把這個(gè)請(qǐng)求流程關(guān)鍵的數(shù)據(jù)寫入日志(例如訪問時(shí)的參數(shù),經(jīng)過那些方法,微服務(wù),結(jié)束時(shí)返回的數(shù)據(jù)等),當(dāng)訪問出現(xiàn)問題時(shí)用于參考,方便追蹤到問題。

例如一個(gè)請(qǐng)求需要經(jīng)過幾個(gè)微服務(wù)再返回輸出

請(qǐng)求->A->B->C-A->輸出

如果訪問過程沒有輸出,或輸出錯(cuò)誤,我們可以根據(jù)RequestID找到A,B,C對(duì)應(yīng)的日志,檢查是哪個(gè)服務(wù)出現(xiàn)問題。

代碼如下:

RequestID.class.php

?php
/**
 * PHP生成唯一RequestID類
 * Date: 2018-04-10
 * Author: fdipzone
 * Version: 1.0
 *
 * Description:
 * PHP實(shí)現(xiàn)生成唯一RequestID類,使用session_create_id()與uniqid()方法實(shí)現(xiàn),保證唯一性。
 *
 * Func:
 * public generate 生成唯一請(qǐng)求id
 * private format 格式化請(qǐng)求id
 */
class RequestID{ // class start
 /**
  * 生成唯一請(qǐng)求id
  * @return String
  */
 public static function generate(){
  // 使用session_create_id()方法創(chuàng)建前綴
  $prefix = session_create_id(date('YmdHis'));
  // 使用uniqid()方法創(chuàng)建唯一id
  $request_id = strtoupper(md5(uniqid($prefix, true)));
  // 格式化請(qǐng)求id
  return self::format($request_id);
 }
 /**
  * 格式化請(qǐng)求id
  * @param String $request_id 請(qǐng)求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);
  // 根據(jù)設(shè)定格式化
  if($cut){
   foreach($cut as $v){
    $tmp[] = substr($request_id, $offset, $v);
    $offset += $v;
   }
  }
  // 加入剩余部分
  if($offsetstrlen($request_id)){
   $tmp[] = substr($request_id, $offset);
  }
  return implode('-', $tmp);
 }
} // class end
?>

demo:

?php
require 'RequestID.class.php';
// 生成10個(gè)請(qǐng)求id
for($i=0; $i10; $i++){
 echo RequestID::generate().PHP_EOL;
}
?>

輸出:

16532925-4502-CDAD-23A2-463FC7B5803A
500B77AD-CD24-0DDA-9E6E-2FDF2DD7CA94
813143D0-958F-9F56-E04F-679598594452
E5EE1B0B-E0D6-3E60-D831-462C5A262FCE
79E714B5-A37F-4B5E-4EDE-83E18391EBF9
E1C440AB-FC2C-AC74-E79A-016FD59D9651
AE483861-1040-BE8D-E523-D7638D0F0D35
BBD7A03A-36C9-24B7-C453-FB1DDD6E201E
BF62C3E6-9C5F-22CB-668D-381863B35268
E97E1F44-F048-962A-5BF7-1113727551B1

注意session_create_id方法需要php7.1以上的版本才可使用。

關(guān)于session_create_id方法可參考官網(wǎng)說明:
http://php.net/manual/zh/function.session-create-id.php

源碼下載地址:點(diǎn)擊此處本站下載。

PS:這里再為大家提供兩款相關(guān)在線工具供大家參考使用:

在線隨機(jī)數(shù)字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu

在線隨機(jī)字符/隨機(jī)密碼生成工具:
http://tools.jb51.net/aideddesign/rnd_password

在線隨機(jī)數(shù)生成工具:
http://tools.jb51.net/aideddesign/rnd_num

在線隨機(jī)數(shù)/隨機(jī)密碼批量生成工具:
http://tools.jb51.net/aideddesign/rnd_pwd_tool

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)學(xué)運(yùn)算技巧總結(jié)》、《php字符串(string)用法總結(jié)》、《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《php程序設(shè)計(jì)算法總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》及《php常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • 使用PHP uniqid函數(shù)生成唯一ID
  • PHP之uniqid()函數(shù)用法
  • PHP實(shí)現(xiàn)會(huì)員賬號(hào)單唯一登錄的方法分析
  • 完美解決thinkphp唯一索引重復(fù)時(shí)出錯(cuò)的問題
  • PHP生成唯一ID之SnowFlake算法
  • 3種php生成唯一id的方法
  • PHP實(shí)現(xiàn)生成唯一會(huì)員卡號(hào)
  • PHP生成唯一訂單號(hào)
  • PHP隨機(jī)生成唯一HASH值自定義函數(shù)
  • PHP生成唯一訂單號(hào)的方法匯總
  • 高并發(fā)php uniqid不重復(fù)唯一標(biāo)識(shí)符生成方案

標(biāo)簽:巴中 梅州 山東 泰州 威海 張家口 林芝 成都

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),的,生成,唯一,RequestID,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實(shí)現(xiàn)的生成唯一RequestID類完整示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    连山| 芦山县| 平凉市| 咸丰县| 禹城市| 武定县| 星座| 成都市| 开阳县| 祁阳县| 峨眉山市| 白水县| 漳州市| 达拉特旗| 嵩明县| 大名县| 绥滨县| 永兴县| 玛曲县| 行唐县| 当雄县| 寿宁县| 巴楚县| 江津市| 南宁市| 淮北市| 巢湖市| 平顺县| 香河县| 泽普县| 南涧| 武鸣县| 芜湖县| 昌宁县| 合作市| 梁河县| 雷山县| 永宁县| 清远市| 武安市| 双柏县|