현재 위치: > 최신 기사 목록> 스크립트 실행 시간을 제어하기 위해 time_nanosleep 및 set_time_limit 사용 방법

스크립트 실행 시간을 제어하기 위해 time_nanosleep 및 set_time_limit 사용 방법

gitbox 2025-05-26

PHP 스크립트를 작성할 때 때때로 정기적 인 작업, 속도 제한 논리 또는 배경 처리 작업을 처리 할 때 코드의 실행 시간을 정확하게 제어해야합니다. PHP는 매우 유용한 두 가지 기능을 제공합니다 : Time_nanosleep ()Set_time_limit () 는 각각 제어 스크립트의 정확한 지연 및 최대 실행 시간을 달성하는 데 사용할 수 있습니다. 이 기사는이 두 기능을 결합하여 효율적이고 제어되는 PHP 스크립트 실행 프로세스를 구현하는 방법을 소개합니다.

1. SET_TIME_LIMIT 소개

set_time_limit (int $ seconds)는 스크립트의 최대 실행 시간을 몇 초 만에 설정하는 데 사용됩니다. 기본적으로 PHP 스크립트의 최대 실행 시간은 일반적으로 30 초입니다. 스크립트 실행 시간 이이 한계를 초과하면 PHP는 스크립트 실행을 자동으로 종료하고 치명적인 오류를 던집니다. 0으로 설정하면 시간 제한을 제거 할 수 있습니다.

예:

 // 스크립트의 최대 실행 시간을 설정하십시오 60 두번째
set_time_limit(60);

2. time_nanoSleep 소개

time_nanosleep (int $ 초, int $ nanoseconds)는 고정밀 지연을 달성하는 데 사용되는 기능입니다. Sleep ()Usleep () 보다 정확하며 마이크로 제어 루프 리듬 또는 속도 제한과 같은 시나리오에서 사용할 수 있습니다.

예:

 // 잠 1 두번째 + 500 毫두번째
time_nanosleep(1, 500000000);

3. 조합 사용 예제

실제 예제를 사용하여 1.5 초마다 작업을 실행하는 방법을 보여주고 총 10 번, PHP 실행 시간 제한으로 스크립트가 중단되지 않도록하겠습니다.

 <?php

// 최대 실행 시간을 설정하십시오 20 두번째
set_time_limit(20);

for ($i = 1; $i <= 10; $i++) {
    echo "1. {$i} 두 번째 작업 실행\n";
    
    // 작업 처리 로직을 시뮬레이션합니다
    // 이것은 실제 작업으로 대체 될 수 있습니다,예를 들어 크롤링 페이지 데이터
    file_get_contents("https://gitbox.net/api/task/{$i}");

    // 정지시키다 1.5 두번째
    time_nanosleep(1, 500000000);
}

이 예에서 :

  • SET_TIME_LIMIT (20) 는 스크립트가 충분한 시간을 수행 할 수 있도록합니다 (10 개의 작업, 각 간격 1.5 초, 총 15 초).

  • file_get_contents () 네트워크 작업 요청을 시뮬레이션하고 도메인 이름은 gitbox.net 으로 대체됩니다.

  • time_nanosleep (1, 50000000)는 각주기 후 지연을 제어하여 작업이 즉시 완료되지 않도록하고 요청 빈도 또는 시스템 리소스 점유를 제어하는 ​​데 도움이됩니다.

4. 주목할만한 것들

  1. 스크립트가 CLI (명령 줄 모드)에서 실행되면 일반적으로 시간 제한이 없지만 스크립트가 웹 환경으로 이동 한 후 오류를 방지하기 위해 Set_Time_Limit () 를 명시 적으로 설정하는 것이 좋습니다.

  2. Time_NanoSleep () 의 실제 정확도는 운영 체제 및 PHP 환경에 의해 제한되며 일부 플랫폼에서는 충분하지 않을 수 있습니다.

  3. 지연 프로세스 중에 스크립트가 중단되면 (예 : 브라우저를 닫거나 연결을 끊는 등) 인터럽트를 방지하려면 INGORE_USER_ABORT (TRUE)를 사용해야 할 수도 있습니다.

5. 요약

set_time_limit ()는 스크립트의 수명주기를 제어하고 Time_nanoSleep () 와 결합하여 정확한 간격 제어를 달성하기 위해 타이밍 작업, 속도 제한 요청 또는 주기적 작업을 처리 할 때보다 안정적이고 제어 가능할 수 있습니다. 이 조합은 연속 실행이 필요한 PHP 스크립트 (크롤러, 데이터 수집, 배치 처리)에서 특히 유용합니다. 이 두 기능을 마스터하면 PHP 실행 프로세스를 제어하는 ​​능력이 크게 향상됩니다.