테스트를 자동화하거나 성능 테스트 또는 고정밀 타이밍 작업을 시뮬레이션하는 PHP 프로그램을 작성할 때 기존의 수면 () 또는 usleep () 기능으로는 대기 시간 정확도에 대한 엄격한 요구 사항을 충족하기에 충분하지 않습니다. Sleep ()는 몇 초 안에 실행을 일시 중지 할 수 있지만 USLEAP ()는 마이크로 초를 지원하지만 실제 정확도는 운영 체제 스케줄러 및 시스템로드에 의해 쉽게 영향을받습니다.
보다 세분화되고 안정적인 대기 시간 방법을 찾고 있다면 PHP의 Time_NanoSleep () 기능은 고려해야 할 도구입니다. 이 기사에서는 Time_NanoSleep ()를 사용하여 안정적이고 일관된 테스트 지연을 달성하는 방법을 소개합니다.
time_nanoSleep () 는 나노초 일시 정지 실행을 위해 PHP가 제공하는 함수입니다. 기능 프로토 타입은 다음과 같습니다.
bool time_nanosleep(int $seconds, int $nanoseconds)
이 기능은 두 가지 매개 변수를 수용합니다.
$ 초 : 일시 중지 된 초 수;
$ Nanoseconds : 최대 값은 99999999 인 나노초의 수입니다.
예를 들어, 0.5 초 동안 일시 중지하려면 다음을 작성할 수 있습니다.
time_nanosleep(0, 500000000);
일부 단위 테스트 또는 스트레스 테스트 스크립트에서는 실제 사용자 작업을 시뮬레이션하거나 시스템 동작의 일관성을 확인하기 위해 기능 실행 간격을 정확하게 제어해야 할 수도 있습니다. time_nanosleep ()를 사용하면 일부 시스템에서 정밀도가 충분하지 않아 문제가 발생하지 않을 수 있습니다.
예를 들어:
function simulate_user_delay() {
echo "시뮬레이션을 시작하십시오...\n";
for ($i = 0; $i < 5; $i++) {
echo "1. {$i} 요청 요청 https://gitbox.net/api/test\n";
time_nanosleep(0, 200000000); // 정지시키다 200ms
}
echo "시뮬레이션이 끝납니다。\n";
}
simulate_user_delay();
time_nanosleep ()는 수면 중에 시스템 신호에 의해 중단 될 수 있습니다. 전체 일시 정지주기를 계속 실행할 수 있는지 확인 해야하는 경우 리턴 값을 감지하고 다시 실행하여 수행 할 수 있습니다. 예를 들어:
$seconds = 0;
$nanoseconds = 300000000; // 300ms
do {
$result = time_nanosleep($seconds, $nanoseconds);
if (is_array($result)) {
$seconds = $result['seconds'];
$nanoseconds = $result['nanoseconds'];
}
} while (is_array($result));
이를 통해 인터럽트가 발생하더라도 예상 일시 중지 시간을 정확하게 완료 할 수 있습니다.
기능 이름 | 최소 단위 | 정확도 (시스템의 영향) | 중단 될 수 있는지 여부 |
---|---|---|---|
잠() | 두번째 | 낮은 | 예 |
usleep () | 마이크로 초 | 가운데 | 예 |
time_nanosleep () | 나노 초 | 높은 | 예 |
시간 정확도가 서브 초로 제어되는 시나리오의 경우 time_nanoSleep ()는 더 높은 신뢰성을 제공합니다.
Time_nanosleep () 는 PHP에서 매우 유용한 지연 기능이며 특히 정밀 요구 사항이 높은 작업에 적합합니다. 사용자 동작을보다 현실적으로 시뮬레이션하고 시스템 안정성을 확인하며 테스트 결과를보다 신뢰할 수 있도록 도와줍니다.
실제로 Time_NanoSleep ()를 사용할 때 인터럽트 처리에주의를 기울이고 테스트 플랫폼의 시스템로드를 기반으로 실제 효과를 평가하는 것이 좋습니다. 다른 테스트 도구 및 로깅 메커니즘과 함께 Time_nanosleep ()는 PHP 성능 테스트 도구 상자의 필수 불가결 한 멤버가 될 수 있습니다.