time_nanosleep () 는 PHP에서 나노 초 레벨 지연을 구현하는 함수입니다. sleep () 또는 usleep () 보다 더 정확한 일시 정지 실행 방법을 제공합니다. 이 기능은 CLI 및 웹과 같은 운영 환경에서 다른 운영 환경에서 다르게 수행 될 수 있으며 개발자는 사용할 때 주요 세부 사항에주의를 기울여야합니다.
<?php
// 정지시키다 2 두번째 100 万纳두번째(지금 바로 0.001 두번째)
time_nanosleep(2, 1000000);
?>
이 함수는 두 가지 매개 변수를 수신합니다. 첫 번째는 초 ( int $ 초 )이고 두 번째는 나노초 수 ( int $ 나노초 , 0 ~ 999999999)입니다. 실행 중에 오류 나 인터럽트가 없으면 지정된 시간을 정확하게 일시 중지합니다.
CLI 환경 : 명령 줄에서 PHP 스크립트를 실행할 때 Time_nanoSleep ()는 예상 일시 중지 시간에 가장 가까운 것을 수행합니다. CLI 환경에 자원이 상대적으로 충분하고 간섭이 적고 운영 체제 일정이 대기 시간에 미치는 영향이 적기 때문입니다.
웹 환경 (예 : Apache 또는 Nginx를 통한 실행) : Time_NanoSleep ()는 최대 실행 시간 ( Max_Execution_Time ), 리소스 스케줄링, 동시 처리 등과 같은 웹 서버 제한으로 인해 정확한 지연을 달성 할 수 없습니다. 특히 동시성 또는 높은 서버로드가있을 때 시간 제어가 중단되거나 무시 될 수 있습니다.
PHP는 일반적으로 웹 환경에서 max_execution_time 제한이 적용됩니다.
ini_set('max_execution_time', 3); // 스크립트는 최대를 실행할 수 있습니다3두번째
time_nanosleep(2, 800000000); // 실제로 접근하기를 기다리고 있습니다2.8두번째
최대 실행 시간을 초과하면 스크립트가 실행을 중단하고 오류를 던집니다. CLI 환경에서는이 제한이 일반적으로 존재하지 않으며 스크립트는 더 오래 실행될 수 있습니다.
웹 환경에서 time_nanosleep ()를 사용하는 것은 일반적으로 좋은 생각이 아니며, 특히 페이지로드를 지연시키는 데 직접 사용됩니다. 예를 들어:
<?php
// 권장되지 않습니다 Web 페이지에서 직접 사용하십시오
time_nanosleep(3, 0);
echo "페이지 지연로드";
?>
이 관행은 페이지 응답이 느리고 사용자 경험이 좋지 않습니다. 올바른 접근법은 PHP 스크립트를 차단하지 않고 비동기 작업, 큐 프로세스 또는 프론트 엔드로드 애니메이션에 지연된 작업을 배치하는 것입니다.
CLI 환경에서 크롤러 및 배치 작업을 작성할 때 속도를 제한하는 데 사용됩니다.
foreach ($urls as $url) {
file_get_contents("https://gitbox.net/api/fetch?url=" . urlencode($url));
time_nanosleep(0, 500000000); // 정지시키다0.5두번째
}
파일 변경을 듣는 것과 같은 적시에 폴링 스크립트 :
while (true) {
clearstatcache();
$lastModified = filemtime("/path/to/file.txt");
// 처리 로직...
time_nanosleep(1, 0); // 每두번째检测一次
}
나노 초 정확도는 필수적이지 않습니다 . 일부 운영 체제 또는 PHP 버전에서는 Time_Nanosleep () 의 정확도가 불충분 할 수 있습니다. 특히 나노 초 값이 너무 작을 때.
인터럽트 정보는 중단되면 반환됩니다 . 중단되면 미완성 수면 시간이 포함 된 배열을 반환합니다.
오류 처리 제안 :
if (time_nanosleep(1, 500000000) === false) {
echo "지연 실패。\n";
}
time_nanosleep () 는 강력하지만 쉽게 잘못 사용되는 기능입니다. CLI 환경에서는 개발자가 작업 실행 빈도를 정확하게 제어하거나 비 차단 경량 대기를 구현하는 데 도움이 될 수 있습니다. 웹 환경에서는 페이지 응답 속도 및 사용자 경험에 영향을 미치지 않도록이 기능을 사용할 때 매우 신중해야합니다. 이 기능을 합리적으로 사용하고 환경 적 특성과 자원 제한과 협력하는 것만으로 만 가치를 발휘할 수 있습니다.