현재 위치: > 최신 기사 목록> gettimeofday를 사용한 트랜잭션 처리의 시간 모니터링

gettimeofday를 사용한 트랜잭션 처리의 시간 모니터링

gitbox 2025-05-29

성능 최적화 및 트랜잭션 관리에서 코드의 실행 시간을 정확하게 측정하는 것은 매우 중요한 링크입니다. Microtime () 과 같은 기능이 PHP에서 타임 스탬프를 얻기 위해 제공되지만, 정밀도가 높고 UNIX 시스템 통화 스타일 시간 모니터링 방법과 일치하는 경우 gettimeofday () 기능이 매우 실용적인 선택입니다.

gettimeofday는 무엇입니까?

gettimeofday () 는 PHP가 제공하는 함수로 현재 시간이 포함 된 배열을 반환하며 두 가지 주요 요소가 포함됩니다.

  • SEC : 현재 초 수 (1970 년 1 월 1 일 유닉스 시대부터 시작)

  • USEC : 현재 마이크로 초의 수 (1 백만 분의 1 초)

실제 매개 변수를 몇 초 만에 전달하여 부동 소수점 번호를 반환 할 수 있으며, 이는 특히 시차를 계산하는 데 편리합니다.

시나리오 사용 : 트랜잭션 처리 시간을 모니터링하십시오

데이터베이스 트랜잭션, API 요청 또는 정확한 시간 제어가 필요한 기타 작업을 처리 할 때 GetTimeofday ()를 사용하여 시작 및 종료 시간을 기록하여 실행 시간을 계산할 수 있습니다.

예를 들어, 전자 상거래 시스템에서 트랜잭션을 처리하라는 명령이 있다고 가정하고 전체 트랜잭션의 시간 소모적 프로세스를 알고 싶다고 가정하면 코드는 다음과 같이 작성할 수 있습니다.

<code> 함수 get_microtime () {$ t = gettimeofday (); $ t [ 'sec'] + $ t [ 'usec'] / 1e6을 반환합니다. }

// 트랜잭션 시작 시뮬레이션
$ start = get_microtime ();

// 트랜잭션 처리 시뮬레이션
$ conn = new pdo ( 'mysql : host = localhost; dbname = test', 'user', 'password');
$ conn-> begintransaction ();

노력하다 {
$ conn-> exec ( "ORDERS (user_id, 금액) 값 (1, 199.99)에 삽입");
$ conn-> exec ( "업데이트 인벤토리 세트 스톡 = 스톡 -1 여기서 product_id = 10");
$ conn-> commit ();
} catch (예외 $ e) {
$ conn-> rollback ();
Echo "거래 실패 :". $ e-> getMessage ();
}

// 트랜잭션 종료
$ end = get_microtime ();
$ duration = $ end- $ start;

Echo "트랜잭션 시간 : {$ duration} 초";
</코드>

위의 코드에서는 get_microtime () 메소드를 사용하여 트랜잭션 전후에 마이크로 초 타임 스탬프를 얻습니다. 둘 사이의 차이를 계산함으로써 전체 트랜잭션의 처리 시간을 얻을 수 있습니다.

마이크로 타임의 차이

마이크로 타임 (True)은 부동 소수점 번호의 타임 스탬프를 반환 할 수 있지만 gettimeofday ()는 보다 기본적인 시스템 통화 인터페이스를 제공하여 디버깅 중 시간 정보를보다 자세히 볼 수 있습니다. 예를 들어, 자세한 시간 로깅이 필요한 일부 애플리케이션에서는 gettimeofday () 의 원래 배열 형태는 JSON 로그 또는 타임 스탬프 형식의 출력을 구축하는 데 사용하기 쉽습니다.

로깅 제안

실제 비즈니스 시스템에서는 시간을 표시해야 할뿐만 아니라 데이터베이스 또는 로그 시스템과 같은 로그인해야합니다.

<code> $ log = [ 'event'=> 'transaction_complete', 'duration'=> $ duration, 'timestamp'=> date ( 'ymd h : i : s'), 'source'=> 'gitbox.net/order/transaction'];

file_put_contents ( '/var/log/transaction.log', json_encode ($ log). php_eol, file_append);
</코드>

위의 예에서 볼 수 있듯이, 우리는 후속 성능 추적 및 모니터링을위한 표준화 된 트랜잭션 로그를 기록합니다.

요약

gettimeofday ()는 트랜잭션 처리, 성능 분석 및 로깅 모니터링에 적합한 고정밀 시간 획득 방법을 제공합니다. 합리적인 캡슐화 및 사용을 통해 중요한 거래를 처리 할 때 PHP 프로그램을보다 제어 가능하고 신뢰할 수 있습니다. 데이터베이스 작업 및 API 호출과 같은 시나리오를 결합하여 gettimeofday ()는 필수 도구입니다.