반응형
본고에서는 PHP 생성 유일 Request ID 클래스를 소개하고 session_create_id()와 uniqid() 방법을 사용하여 유일성을 보장하며, 완전한 코드 및 프레젠테이션을 제공하여 여러분이 쉽게 학습하고 사용할 수 있도록 합니다.
현재의 시스템 설계는 일반적으로 분산 시스템을 사용하는데, 하나의 요구는 아마도 몇 개의 마이크로 서비스를 호출하여 처리한 후에 다시 결과를 반환해야 할 것이다.요청이 문제가 생겼을 때 어떤 마이크로서비스에 문제가 생겼는지를 추적하는 것은 매우 어렵다.
각 서버에 대한 액세스를 요청할 때, 이 액세스에 RequestID(RequestID)를 추가할 수 있습니다. 요청 시작, 요청 프로세스 및 요청이 끝날 때, 요청 프로세스의 중요한 데이터를 로그에 기록합니다(예: 액세스 시).의 파라미터는, 그러한 방법을 거쳐, 마이크로 서비스, 종료시에 반환되는 데이터 등), 액세스에 문제가 생겼을 때 참고로 하여, 문제 추적이 용이하다.
예를 들어, 하나의 요청은 몇 개의 마이크로 서비스를 거쳐서 다시 출력해야 한다
요청 ->A ->B ->C-A ->출력
만약 접속 과정에 출력이 없거나 출력이 잘못된 경우 Request ID를 기반으로 A, B, C에 해당하는 로그를 찾아 어떤 서비스에 문제가 있는지 확인할 수 있다.
코드는 다음과 같습니다.
RequestID.class.php
<?php
/**
* PHP 생성 유일한 RequestID 클래스
* Date: 2018-04-10
* Author: fdipzone
* Version: 1.0
*
* Description:
* PHP 구현은 고유한 Request ID 클래스를 생성하고 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
?>
demo:
<?php
require 'RequestID.class.php';
// 10개의 요청 ID 생성
for($i=0; $i<10; $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 방법은 php 7.1 이상의 버전이 있어야 사용할 수 있습니다.
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
php XML 파일 해석 클래스 (0) | 2022.08.16 |
---|---|
php 광고 로딩 클래스 (0) | 2022.08.15 |
php 양방향 큐 클래스 (0) | 2022.08.10 |
php CSV 추상화 내보내기 (0) | 2022.08.10 |
php Time 페이지 실행 시간 모니터링 클래스 (0) | 2022.08.09 |