현재 위치: > 최신 기사 목록> Time_NanoSleep을 사용하여 진행률 표시 줄로 배치 처리를 구현하십시오

Time_NanoSleep을 사용하여 진행률 표시 줄로 배치 처리를 구현하십시오

gitbox 2025-05-29

PHP에서 배치 작업을 수행 할 때는 일반적으로 처리 프로세스 중에 사용자에게 진행 상황을 표시해야합니다. time_nanoSleep 기능을 사용하여 고정밀 수면 제어를 달성하여 배치 처리 중에 진행률 표시 줄의 업데이트 효과를 시뮬레이션합니다. 이 기사는 간단한 명령 줄 진행 막대와 결합하여 Time_nanoSleep을 사용하여 진행 프롬프트와 함께 배치 처리 작업을 구현하는 방법을 소개합니다.


1. Time_nanoSleep 소개

time_nanoSleep은 프로그램 실행을 일시 중지하는 데 PHP에서 사용되는 기능입니다. 프로그램은 다음과 같이 형식으로 두 번째 및 나노초 레벨에서 시간을 일시 중지 할 수 있습니다.

 bool time_nanosleep(int $seconds, int $nanoseconds);
  • $ 초 : 정수 초

  • $ 나노 초 : 나노 초, 1 초 = 10 억 나노초

수면수면 과 비교할 때 Time_nanosleep은 정밀한 대기가 필요한 시나리오에 적합한 정밀 시간 제어를 제공합니다.

2. 진행률 막대 구현을위한 아이디어

  1. 100과 같은 총 처리 단계 수를 설정하십시오.

  2. 작업의 각 부분이 처리되면 업데이트 진행률 표시 줄 표시가 표시됩니다.

  3. 각 단계의 처리 시간은 Time_NanoSleep을 통해 시뮬레이션하여 쉬운 데모를 시뮬레이션합니다.

3. 샘플 코드

다음 코드는 Time_NanoSleep을 사용하여 명령 줄 진행률 표시 줄을 구현하는 방법을 보여줍니다.

 <?php
$totalSteps = 50; // 총 단계 수
$barWidth = 40;   // 진행 막대 너비

echo "배치 작업을 시작하십시오...\n";

for ($i = 1; $i <= $totalSteps; $i++) {
    // 작업 처리 시간을 시뮬레이션합니다,잠50밀리 초
    time_nanosleep(0, 50 * 1000000); 

    // 진행률 백분율을 계산합니다
    $progress = $i / $totalSteps;
    $filledLength = round($barWidth * $progress);

    // 진행률 막대 문자열을 구성하십시오
    $bar = str_repeat("=", $filledLength) . str_repeat(" ", $barWidth - $filledLength);

    // 출력 진행률 표시 줄 및 백분율,사용 "\r" 줄의 시작 부분으로 돌아갑니다,동적 업데이트를 구현하십시오
    printf("\r[%s] %.2f%%", $bar, $progress * 100);
    flush();
}

echo "\n배치 작동이 완료되었습니다!\n";

코드 구문 분석

  • Time_Nanosleep (0, 50 * 10000000)를 사용하여 50 밀리 초 동안 프로그램을 일시 중지하여 단계 당 처리 시간을 시뮬레이션하십시오.

  • \ r을 사용하여 문자를 제어하여 라인의 시작 부분으로 돌아가 진행 막대의 동적 새로 고침을 달성하십시오.

  • Printf는 포맷 된 진행률 표시 줄과 백분율을 출력합니다.

  • Flush ()는 출력이 제 시간에 표시되도록합니다.

4. 생각을 확장하십시오

  • 배치 작업이 실제 작업 인 경우 수면을 특정 작업 실행 로직으로 대체 할 수 있습니다.

  • 출력 로그 또는 오류 메시지와 결합하여 디버깅 및 모니터링에 더 도움이됩니다.

  • $ barwidth 및 수면 시간을 조정하여 진행률 표시 줄의 디스플레이 효과를 제어하고 속도를 새롭게 할 수 있습니다.

5. 참조 리소스

time_nanosleep 에 대한 더 많은 공식 문서를 볼 수 있습니다.

 https://gitbox.net/manual/en/function.time-nanosleep.php