Time_nanosleep 은 PHP의 내장 기능으로 현재 프로세스가 지정된 초 및 나노초로 잠을 잘 수 있습니다. 기능 서명은 다음과 같습니다.
bool time_nanosleep(int $seconds, int $nanoseconds)
$ 초 : 정수 초, 수면 시간의 두 번째 부분.
$ 나노 초 : 0 내지 999,999,999 범위의 나노 초.
기존의 수면 기능과 비교할 때, 2 차 지연 만 구현할 수 있으며 Time_nanosleep은 나노 초 수준 지연을 지원하여보다 정확한 시간 제어를 달성합니다.
과도한 I/O 압력이 너무 높거나 네트워크 서비스 빈도 한계를 방지하기 위해 많은 파일을 처리 할 때 정확한 시간 (예 : 500 밀리 초) 동안 일시 중지를 원한다고 가정 해 봅시다. Time_nanoSleep 은이 요구 사항을 충족 할 수 있습니다.
다음 예는 폴더를 가로 질러 파일을 처리 한 후 Time_NanoSleep을 사용하여 500 밀리 초를 일시 중지하는 방법을 보여줍니다.
<?php
$directory = '/path/to/your/files';
// 디렉토리 핸들을 엽니 다
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
// 특수 디렉토리를 무시하십시오
if ($file === '.' || $file === '..') {
continue;
}
$filePath = $directory . DIRECTORY_SEPARATOR . $file;
// 파일 처리 작업은 여기에서 수행됩니다
echo "Processing file: $filePath\n";
// 파일 처리 시간을 시뮬레이션합니다
// file_get_contents, file_put_contents, 또는 다른 작업
// 잠500밀리 초,너무 빨리 처리를 방지하십시오
$seconds = 0;
$nanoseconds = 500 * 1000000; // 500밀리 초 = 500,000,000나노 초
time_nanosleep($seconds, $nanoseconds);
}
closedir($handle);
}
?>
지정된 디렉토리의 모든 파일을 반복합니다.
각 파일을 처리 한 후 500ms 일시 정지가 Time_nanoSleep (0, 500000000) 를 통해 달성됩니다.
이를 통해 처리 리듬이 균일하고 많은 파일 작업으로 인한 성능 병목 현상을 피합니다.
Time_nanosleep 의 정확도 지원은 운영 체제 및 PHP 환경에 따라 다르며 실제 수면 시간은 약간 편향 될 수 있지만 일반적으로 가장 정확한 제어 요구를 충족시킬 수 있습니다.
나노 초 매개 변수 범위는 0-999,999,999,999로 제한되므로 범위를 벗어난 경우 경고가 발생합니다.
수면을 중단 해야하는 경우 Time_sleep_until 또는 신호 처리 메커니즘을 사용하여 구현할 수 있습니다.
배치 호출 API와 같은 일부 시나리오에서는 Time_NanoSleep을 사용하여 요청 빈도를 제어하여 지나치게 빠르게 요청이 제한되는 것을 방지 할 수 있습니다. 예를 들어:
<?php
$urls = [
'https://gitbox.net/api/data1',
'https://gitbox.net/api/data2',
'https://gitbox.net/api/data3',
];
foreach ($urls as $url) {
// 요청을 보내십시오(개략도)
echo "Fetching data from: $url\n";
// 예를 들어 file_get_contents($url) 또는 curl 묻다
// 잠200밀리 초,防止묻다过快
time_nanosleep(0, 200 * 1000000);
}
?>
Time_NanoSleep 기능은 PHP에서 매우 유용한 도구이며, 세분화 된 시간 제어가 필요한 시나리오에 적합합니다. 이를 통해 파일 처리 및 API 호출과 같은 작업의 정확한 리듬 제어를 실현하여 프로그램 안정성 및 시스템로드 밸런싱 개선을 실현할 수 있습니다. 이 기능을 합리적으로 사용하면 PHP 프로그램을 더 매끄럽게 만들고 너무 빠른 운영으로 인한 잠재적 위험을 피할 수 있습니다.