PHP에서 배치 작업을 수행 할 때는 일반적으로 처리 프로세스 중에 사용자에게 진행 상황을 표시해야합니다. time_nanoSleep 기능을 사용하여 고정밀 수면 제어를 달성하여 배치 처리 중에 진행률 표시 줄의 업데이트 효과를 시뮬레이션합니다. 이 기사는 간단한 명령 줄 진행 막대와 결합하여 Time_nanoSleep을 사용하여 진행 프롬프트와 함께 배치 처리 작업을 구현하는 방법을 소개합니다.
time_nanoSleep은 프로그램 실행을 일시 중지하는 데 PHP에서 사용되는 기능입니다. 프로그램은 다음과 같이 형식으로 두 번째 및 나노초 레벨에서 시간을 일시 중지 할 수 있습니다.
bool time_nanosleep(int $seconds, int $nanoseconds);
$ 초 : 정수 초
$ 나노 초 : 나노 초, 1 초 = 10 억 나노초
수면 및 수면 과 비교할 때 Time_nanosleep은 정밀한 대기가 필요한 시나리오에 적합한 정밀 시간 제어를 제공합니다.
100과 같은 총 처리 단계 수를 설정하십시오.
작업의 각 부분이 처리되면 업데이트 진행률 표시 줄 표시가 표시됩니다.
각 단계의 처리 시간은 Time_NanoSleep을 통해 시뮬레이션하여 쉬운 데모를 시뮬레이션합니다.
다음 코드는 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 ()는 출력이 제 시간에 표시되도록합니다.
배치 작업이 실제 작업 인 경우 수면을 특정 작업 실행 로직으로 대체 할 수 있습니다.
출력 로그 또는 오류 메시지와 결합하여 디버깅 및 모니터링에 더 도움이됩니다.
$ barwidth 및 수면 시간을 조정하여 진행률 표시 줄의 디스플레이 효과를 제어하고 속도를 새롭게 할 수 있습니다.
time_nanosleep 에 대한 더 많은 공식 문서를 볼 수 있습니다.
https://gitbox.net/manual/en/function.time-nanosleep.php