PHP에서 Time_NanoSleep 함수는 프로그램이 지정된 초 및 나노초 수를 일시 중지하는 데 사용되며, 수면 및 수면 보다 정확도가 높으며 엄격한 시간 제어 요구 사항이있는 시나리오에 적합합니다. 그러나 실제 개발에서는 종종이 기능이 성공적으로 실행되는지 여부와 실패 할 때 올바르게 처리하는 방법을 판단해야합니다.
이 기사는 Time_NanoSleep 기능의 실행 결과를 판단하는 방법을 자세히 설명하고 합리적인 실패 처리 예제를 제공합니다.
bool|array time_nanosleep(int $seconds, int $nanoseconds)
$ 초 : 잠시 멈춤, 정수 수.
$ Nanoseconds : 나노 초 중단, 정수, 범위는 0 ~ 999,999,999입니다.
반품 값 :
성공시 사실을 반환합니다.
신호에 의해 중단되면 나머지 초와 나노초를 포함하는 배열을 반환하십시오.
time_nanoSleep 의 반환 값에 대한 두 가지 가능성이 있습니다.
Return True : 모든 수면 시간이 완료되고 함수가 정상적으로 종료됨을 의미합니다.
반환 배열 : 신호에 의해 수면이 중단됨을 의미합니다. 배열에는 '초' 및 '나노 초' 키가 포함되어있어 남은 시간이 자지 않는 시간을 나타냅니다.
따라서 판단 방법은 다음과 같습니다.
$result = time_nanosleep(2, 500000000); // 잠2.5두번째
if ($result === true) {
echo "잠成功完成\n";
} elseif (is_array($result)) {
echo "잠신호에 의해 중단되었습니다,剩余두번째数:" . $result['seconds'] . ",剩余纳두번째数:" . $result['nanoseconds'] . "\n";
} else {
echo "알 수없는 오류\n";
}
수면이 중단되면 개발자는 일반적으로 Time_NanoSleep을 다시 전화하여 프로그램이 남은 시간 동안 계속 수면을 유지하여 전체 수면 시간의 정확성을 보장합니다.
샘플 코드 :
function safe_nanosleep(int $seconds, int $nanoseconds): void {
while (true) {
$result = time_nanosleep($seconds, $nanoseconds);
if ($result === true) {
// 잠完成,루프를 종료하십시오
break;
} elseif (is_array($result)) {
// 신호에 의해 중단되었습니다,继续잠剩余时间
$seconds = $result['seconds'];
$nanoseconds = $result['nanoseconds'];
} else {
// 다른 비정상적인 상황,예외 또는 로깅을 던질 수 있습니다
throw new RuntimeException('time_nanosleep실행 실패');
}
}
}
try {
safe_nanosleep(1, 0);
echo "安全잠完成\n";
} catch (RuntimeException $e) {
echo "실수:" . $e->getMessage() . "\n";
}
time_nanoSleep은 성공적으로 실행되고 True를 반환하고, 실패 (신호에 의해 중단) 나머지 시간 배열을 반환합니다.
리턴 값 유형을 판단하면 함수가 성공했는지 여부를 명확히 할 수 있습니다.
중단이 발생할 때 루프 재귀 수면 남은 시간을 사용하는 것이이를 처리하는 일반적인 방법입니다.
프로그램의 안정적인 작동을 보장하기 위해 예외 또는 오류를 적절하게 포착합니다.
참조 문서에 액세스 할 수 있습니다.
https://gitbox.net/manual/en/function.time-nanosleep.php